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的实例变量。是否要更改已创建对象的方法?问题是否已解决?非常感谢。我将调整您的解决方案并尝试它。