【发布时间】:2012-02-21 16:07:43
【问题描述】:
正如你看到的这些图片,背景网格线和黑色矩形在菜单项关闭后没有更新。我该如何更新它?在 C# 中有一个事件处理程序可以使其自动更新,但我是 Java swing GUI 应用程序的新手。
代码如下:
public void paint(Graphics g) {
super.paintComponents(g);
MainDisplayForm mD = new MainDisplayForm();
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.BLACK);
int gridWidth = 1240;
int gridHeight = 400;
g2.fillRect(20, 50, gridWidth, gridHeight);
g2.setColor(Color.darkGray);
paintGrid(g2,gridWidth, gridHeight);
g2.setColor(Color.red);
Line2D line = new Line2D.Float(20, 50, 250, 260);
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
//g2.draw(line); //pending
g2.dispose();
}
private void paintGrid(Graphics g, int gridWidth, int gridHeight)
{
for(int i=20; i<gridWidth+20; i=i+10)
{
g.drawLine(i, 50, i, gridHeight+49);
}
for(int i=50; i<gridHeight+50; i=i+10)
{
g.drawLine(20, i, 1259, i);
}
}
//感谢cmets!!这是要添加的事件处理程序。 这必须添加到网格上绘制的每个 memu 项
private void jMenu2MenuDeselected(javax.swing.event.MenuEvent evt) {
repaint();
}
【问题讨论】:
-
MainDisplayForm mD = new MainDisplayForm();那行代码应该做什么?通常,您不应在paint()或paintComponent()方法中创建组件。什么是MainDisplayForm?重申一下 camickr 提到的内容,为了尽快获得更好的帮助,请发帖 SSCCE。
标签: java swing user-interface event-handling draw