今年我在學校開始java,我被要求創建一個程序,用3個線程繪製30個隨機圓圈(每個線程10個)。Java新手:我如何創建一個控制我的paintComponent方法的線程?
我不知道如何使用的paintComponent工作得很好,但這裏是我做了什麼:
class MioPanel extends JPanel implements Runnable {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Dimension dimCerchio1 = new Dimension(50, 50);
for(int i = 0; i < 10; i++) {
g.setColor(Color.black);
g.drawOval((int) ((Math.random()*this.getWidth()) - (dimCerchio1.width)), (int) (Math.random()*this.getHeight() - (dimCerchio1.height)), dimCerchio1.width , dimCerchio1.height);
}
/*for(int i = 0; i < 10; i++) {
g.setColor(Color.red);
g.drawOval((int) ((Math.random()*this.getWidth()) - (dimCerchio1.width)), (int) (Math.random()*this.getHeight() - (dimCerchio1.height)), dimCerchio1.width , dimCerchio1.height);
}
for(int i = 0; i < 10; i++) {
g.setColor(Color.blue);
g.drawOval((int) ((Math.random()*this.getWidth()) - (dimCerchio1.width)), (int) (Math.random()*this.getHeight() - (dimCerchio1.height)), dimCerchio1.width , dimCerchio1.height);
}*/
}
@Override
public void run() {
}
中的run方法是空的「,因爲我真的不知道我怎麼能一起工作這兩個線程和油漆
這裏的主:
public class Main {
public static void main(String[] args) {
MFrame mframe = new MFrame("Cerchi casuali");
Thread first = new Thread(new MioPanel());
/*Thread second = new Thread(new MioPanel());
Thread third = new Thread(new MioPanel());*/
}
}
我希望得到任何幫助,對不起我的英語水平,如果事情是錯的。
你不能這樣做。 Java的Swing組件不是線程安全的。您必須使用單個線程(即Event Dispatch Thread)來執行這些更新。 – markspace
那我該怎麼做類似的事呢? – Jacopo
這不是一個新手任務。這個任務似乎更適合於中級或高級Java類。 –