#java #swing #paintcomponent
#java #swing #paintcomponent
Вопрос:
Какой цели служит super.paintComponent(g) в этом примере кода?
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.GRAY);
g.fillRect(gridX * 50, gridY * 50, 50, 50);
for (int i = 0;i < 10; i ) {
for (int j = 0;j < 10; j ) {
if (savedTiles[i][j])
g.fillRect(i * 50, j * 50, 50, 50);
}
}
}
Комментарии:
1. Это гарантирует, что родительский компонент рисует первым
2. Может ли юз поместить сюда полный класс? супер — это download.oracle.com/javase/tutorial/java/IandI/super.html …
3. @Kaj, это не имеет ничего общего с «родительским». Сначала он вызывает функциональность компонента по умолчанию, прежде чем добавлять настройки. В этом случае я бы предположил, что переопределяется JPanel, и в этом случае функциональность по умолчанию заключается в том, чтобы нарисовать фон компонента. Как только это будет сделано, пользовательский код нарисует прямоугольники поверх фона.
4. Хорошо, я согласен, что это могло быть неверно истолковано. Я не говорил о макете и иерархии компонентов, для меня панель, которую он расширил, является родительской (т. е. super)
5. (То есть я говорил об иерархии наследования)
Ответ №1:
Ответ №2:
Это зависит от того, из какого суперкласса вы переопределяете paintComponent
-метод. Но в качестве ответа он предназначен для вызова версии суперкласса того же метода перед запуском переопределенного.