Почему я не могу использовать объект drawPanel MyDrawPanel, например drawPanel.repaint ();
В настоящее время ваша переменная frame
определена как переменная instance
, поэтому на нее можно ссылаться в любом методе класса.
Однако ваша переменная drawPanel
определяется как переменная local
, поэтому на нее можно ссылаться только в методе, в котором она определена.
Измените переменную drawPanel
, чтобы она определялась как переменная instance
, а не local
. Тогда вы можете использовать drawPanel.repaint()
в методе actionPerformed(...)
.
Вызов repaint () на панели будет более эффективным, поскольку будет перекрашиваться только панель, а не рамка и кнопка.
Кроме того, вы используете старую версию метода add (...).
frame.getContentPane().add(BorderLayout.SOUTH, button);
Вы должны использовать:
frame.getContentPane().add(button, BorderLayout.SOUTH);
и фрейм теперь будет перенаправлять запросы на добавление (...) на панель содержимого, так что вы можете просто использовать:
frame.add(button, BorderLayout.SOUTH);
чтобы сэкономить при печати.