Можно ли переопределить метод paintComponent ранее определенного JPanel?
Да, вы предоставляете свойства панели. Затем метод paintComponent () проверяет состояние этих свойств при выполнении пользовательской рисования.
Таким образом, все, что делает метод actionPerformed (), это получает ссылку на панель и затем устанавливает свойство.
Например, у вас может быть базовый c класс, который рисует прямоугольник:
public class RectanglePanel extends JPanel
{
private boolean squareFilled = false;
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor( getBackground() );
g.drawRect(10, 10, 50, 50);
if (squareFilled)
{
g.setColor( getForeground() );
g.fillRect(10, 10, 50, 50);
}
}
public void toggleSquareFilled()
{
squareFilled = !squareFilled;
repaint();
}
}
Так что код ActionListener будет просто:
rectanglePanel.toggleSquareFilled();
Приведенный выше код предполагает, что " rectanglePanel "- это переменная экземпляра, указывающая на вашу RectanglePanel.