Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Апплеты > JApplet, что использовать paint или paintComponent |
Автор: monax 21.6.2007, 18:31 | ||||
Заинтересовал вопрос, как правильно рисовать в swing. В одной книге нашёл описание как это делать, написал два класса. Потом попробовал заменить paintComponent на paint. Работает по-прежнему. Хотя есть разница. Если в классе Screen убрать вызов super(); из конструктора, то при использовании paintComponent во время завершения апплета вылетают исключения, при использовании paint() этого не происходит. Всё-таки хотелось бы знать, как правильнее.
|
Автор: LSD 21.6.2007, 22:36 |
Лучше использовать paintComponent(). И по идее исключений там быть не должно. Что за исключение у тебя вылетает? |
Автор: monax 22.6.2007, 22:16 | ||||||
Но это если вместо
написать это
Исключение появляется при завершении работы апплета, то есть отловил я это в консоли. |
Автор: newObject 7.8.2007, 10:35 | ||
Во че нашел (случайно, до этого как то не заострял внимание, ЗЛО копи-паста ![]()
Полный текст http://www-128.ibm.com/developerworks/ru/edu/j-medswing/section5.html А эксепшен валится скорее всего из-за того что тяжелый представитель awt не находит легкой пары JPanel, которая инициализируется вызовом конструктора без параметров JPanel ( super(); ). |
Автор: newObject 7.8.2007, 15:17 | ||
1. Я не говорил что Screen тяжеловесный компонент. 2. По поводу конструктора, это да, нагнал. Подзабыл маленько ООП. И всетаки по поводу эксепшена, я не нашел четкого ответа что это может быть, но практически все говорят о http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4280243 в версии 1.3.0 |
Автор: Just_Girl 10.8.2007, 12:13 |
You sometimes see code that overrides paint() instead of paintComponent(). This was necessary in the older AWT, however in Swing paint() calls three methods: paintComponent(), paintBorder(), and paintChildren. The general rule is to override paintComponent() if you're using Swing (JComponent, JPanel, JApplet) and paint() if you're using one of the AWT classes (Applet, Canvas). |