java - 有没有办法覆盖 MenuItemActionPerformed 中的paintComponent 方法?
问题描述
我创建了一个演示程序来绘制一组不寻常的对象。它通过覆盖paintComponent
扩展类的方法来做到这一点JPanel
。这个类被实例化,对象和文本被绘制在JPanel
.
我想在JPanel
以前包含在 a中的 a 中绘制这些对象JFrame
,以响应对它的单击菜单。
的paintComponent
方法需要在一个
private void demoMenuItemActionPerformed(java.awt.event.ActionEvent evt) {
}
是否可以覆盖paintComponent
先前定义的方法JPanel
?
谢谢
解决方案
是否可以覆盖先前定义的 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 的实例变量。
推荐阅读
- java - 在 com.ibm.mq.jms.MQQueue 类中找不到方法 getJMSDestination
- python - 无法使用 ansible azure_rm_sqldatabase 模块部署 azure db
- plsql - Z-ORA-01745:无效的主机/绑定变量名 (PLSQL)
- python-sphinx - 在 Sphinx 中,当在列表中包含 .. note:: 时,我可以防止列表格式发生变化吗?
- sql - 从供应和销售计算库存天数
- linux - LightDM 添加窗口管理器(Openbox)
- ios - 使用未解析的标识符“boundingRect”
- javascript - 如何从没有 id、Jquery 或 Javascript 的 HTML 表中删除空的 th 和 td
- regex - 使用 sed 一次排序 2 行
- php - 转义href