Какая разница между paint(), paintComponent() и paintComponents() в Java Swing?
paint()
paintComponent()
paintComponents()
Я пытался понять, что объясняется в документации Oracle, но мне не ясно.
JApplet
JFrame
JWindow
JDialog
Обязательно используйте нотацию @Override при переопределении метода.
@Override
Это может указывать на проблему попытки переопределить paintComponent(..)в JFrame (у него нет такого метода), что довольно часто встречается.
paintComponent(..)
Вас может заинтересовать чтение Живопись в AWT и Swing
Цитата:
Правила, которые применяются к облегченным компонентам AWT, также применяются к компонентам Swing - например, paint () вызывается, когда приходит время рендеринга, - за исключением того, что Swing дополнительно учитывает вызов paint () в три отдельных метода, которые вызывается в следующем порядке:
protected void paintComponent(Graphics g) protected void paintBorder(Graphics g) protected void paintChildren(Graphics g)
Программы Swing должны переопределять paintComponent () вместо переопределения paint (). Хотя API это позволяет, обычно нет причин переопределять paintBorder () или paintComponents () (и если вы это сделаете, убедитесь, что вы знаете, что делаете!). Этот факторинг позволяет программам переопределять только ту часть рисунка, которую они должны расширить. Например, это решает проблему AWT, упомянутую ранее, когда сбой вызова super.paint () препятствовал появлению легких детей.