这是我的问题的简单版本。我有 3 个类: 公共类 TopographyFrame 扩展 JFrame - 带有 JPAnel 和按钮的简单 JFrame 公共类 TopograpyPanel 扩展 JPanel - JPanel 以填充矩形 公共类 Siec - 执行计算并在 JAnale 上调用重绘的类
在 JPanel 我重写了 paintComponent() 方法
public void paintComponent (Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
System.out.println(rectangles.length);
for(int i = 0 ; i < rectangles.length ; i++){
g2.setPaint(neurony[i].winner);
g2.fillRect((int)rectangles[i].x,(int)rectangles[i].y,(int)rectangles[i].width, (int)rectangles[i].height);
}
}
神经元 - 具有公共颜色获胜者字段的对象数组
在 Siec 类中,我参考了 JPanel 以在 JFrame 类中重新绘制它,我有一个带有私有操作侦听器的按钮:
class MyListener implements ActionListener{
Siec s;
public MyListener(Siec s){
this.s = s;
}
public void actionPerformed(ActionEvent arg0) {
try {
s.forPaint();
} catch (Exception e) {
e.printStackTrace();
}
}
Siec 中的 forPaint() 方法如下所示:
public void forPaint(){
setTopography();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
setTopography();
}
public void setTopography() {
for (int i = 0; i < vector.colors.length; i++) {
neurony[i].winner = vector.colors[(int)(random() * 900 % vector.colors.length)];
}
panel.repaint();
}
vector.color 是颜色数组
所以我的问题是:当我单击一个按钮时,我想立即重新绘制 JPanel,然后在 3 秒后重新绘制一次。Insted JPanel 在 3 秒延迟后仅重绘一次。}