В этом году я начал 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() {
}
Метод выполнения пуста, потому что я на самом деле не знаю, как я могу работать с как нить и краски
Вот главное:
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());*/
}
}
Я был бы признателен за любую помощь, простите за мой английский, если что-то не так.
Вы не можете этого сделать. Компоненты Swing Java не являются потокобезопасными. Для этих обновлений вам нужно использовать один поток - поток Dispatch Event. – markspace
Итак, как я могу сделать что-то похожее? – Jacopo
Это не новичок. Это назначение представляется более подходящим для промежуточного или расширенного класса Java. –