【发布时间】:2011-02-27 23:35:29
【问题描述】:
我正在尝试用 Java Swing 编写一个程序,它输出一个 10 x 10 的几何矩形网格,其中填充了随机颜色。但是,当用户单击显示窗口中的一个矩形时,该矩形应该 repaint() 并更改为另一种颜色。
到目前为止,我已经运行了基本程序,但我不知道如何实现 mouseListener 以便在用户单击内部时更改矩形的颜色。此时,矩形仅在显示窗口展开和最小化时重新绘制。任何建议/帮助将不胜感激!谢谢!
这是我目前所拥有的......
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.geom.*;
public class ColorGrid extends JPanel {
int w, x, y, z;
Color c = new Color((int)(Math.random() * 0xFFFFFF));
public void paint(Graphics g){
Graphics2D g2 = (Graphics2D) g;
setLayout(new GridLayout(10,10));
int w = x = y = z = 0;
for(int i=0;i<100;i++){
Color c = new Color((int)(Math.random() * 0xFFFFFF));
w+=10;
x+=10;
y+=50;
z+=15;
g2.drawRect(w+10,x+30,y,z);
g2.drawRect(w+10,x+30,y,z);
g2.fillRect(w+10,x+30,y,z);
g2.setPaint(c);
}
}
public static void main(String[] args) {
JFrame f= new JFrame();
f.setTitle("ColorGrid Display Window");
f.setSize(200,200);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
Container contentPane = f.getContentPane();
contentPane.add(new ColorGrid());
f.show();
}
}
【问题讨论】:
标签: java user-interface swing paint mouselistener