Java 是否有方法重写MenuItemActionPerformed中的paintComponent方法?

Java 是否有方法重写MenuItemActionPerformed中的paintComponent方法?,java,swing,overriding,jpanel,paintcomponent,Java,Swing,Overriding,Jpanel,Paintcomponent,我创建了一个演示程序,可以绘制一组不寻常的对象。它通过重写扩展JPanel的类的paintComponent方法来实现这一点。该类被实例化,对象和文本被绘制在JPanel中 我想在以前包含在JFrame中的JPanel中绘制这些对象,以响应单击它的菜单 的paintComponent方法需要在 private void demoMenuItemActionPerformed(java.awt.event.ActionEvent evt) { } 是否可以覆盖先前定义的JPanel的paint

我创建了一个演示程序,可以绘制一组不寻常的对象。它通过重写扩展
JPanel
的类的
paintComponent
方法来实现这一点。该类被实例化,对象和文本被绘制在
JPanel

我想在以前包含在
JFrame
中的
JPanel
中绘制这些对象,以响应单击它的菜单

paintComponent
方法需要在

private void demoMenuItemActionPerformed(java.awt.event.ActionEvent evt) {

}
是否可以覆盖先前定义的
JPanel
paintComponent
方法

谢谢

是否可以覆盖先前定义的JPanel的paintComponent方法

是的,您为配电盘提供了属性。然后,paintComponent()方法在执行自定义绘制时检查这些属性的状态

所以actionPerformed()方法所做的就是获取对面板的引用,然后设置属性

例如,您可以有一个绘制矩形的基本类:

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的实例变量。

是否要更改已创建对象的方法?问题是否已解决?非常感谢。我将调整您的解决方案并尝试它。