正如您在视频中看到的,如果您键入 contentPane.repaint(),然后键入 ;,repaint 会自动更改为 getIgnoreRepaint()。我想知道如何解决这个问题。
来源是
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class RandomThread extends Thread{
Container contentPane;
boolean flag = false;
public RandomThread(Container contentPane) {
this.contentPane = contentPane;
}
void finish() {
flag = true;
}
public void run()
{
while(true)
{
int x = ((int)(Math.random()*contentPane.getWidth()));
int y = ((int)(Math.random()*contentPane.getHeight()));
JLabel label = new JLabel("Java");
label.setSize(80,30);
label.setLocation(x, y);
contentPane.add(label);
contentPane.getIgnoreRepaint(); // why this happen?
try {
Thread.sleep(300);
if(flag == true) {
contentPane.removeAll();
label = new JLabel("finish");
label.setSize(80, 30);
label.setLocation(100, 100);
label.setForeground(Color.red);
contentPane.add(label);
contentPane.getIgnoreRepaint(); //same problem
return;
}
}
catch(InterruptedException e) { return; }
}
}
}