【发布时间】:2014-05-09 00:21:04
【问题描述】:
我想创建一个JPanel 并在其上一一绘制。我希望看到它们一个接一个地添加。问题是,我总是要等到paintComponent 方法完成所有事情。有没有办法实现我的愿望?提前致谢!
package javapaintui;
import java.awt.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
class JavaPaintUI extends JFrame {
private JPanel jPanel2;
public JavaPaintUI() {
initComponents();
}
private void initComponents() {
jPanel2 = new Panel2();
this.setContentPane(jPanel2);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
}
class Panel2 extends JPanel {
Panel2() {
setPreferredSize(new Dimension(420, 420));
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("BLAH", 20, 20);
try {
Thread.sleep(5000);
} catch (InterruptedException ex) {
Logger.getLogger(JavaPaintUI.class.getName()).log(Level.SEVERE, null, ex);
}
g.drawRect(200, 200, 200, 200);
}
}
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new JavaPaintUI().setVisible(true);
}
});
}
}
【问题讨论】:
-
要通过HFoE添加到下面的答案,这里是an example的
Timer重复添加随机对象。
标签: java multithreading swing jframe jpanel