Я пытаюсь выполнить два задания одновременно. Одна из вещей, которую я пытаюсь сделать, - показать таймер подсчета, а другой - перемещать мяч.Java одновременное выполнение
Здесь я создаю таймер, а также вызвать метод moveBall
button.addChangeListener(new ChangeListener() {
int start = 0;
public void stateChanged(ChangeEvent e) {
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
timeValue.setText(++start + " sec");
}
};
timer = new Timer(1000, taskPerformer);
timer.start();
ball.moveBall();
}
});
Это мой метод moveBall
public void moveBall() {
Thread ball = new Thread() {
double counter = 0;
int t = (int) (2 * Vy/9.8);
public void run() {
try {
while (t >= 0) {
// calculate Vx and Vy
Ball.this.setX(Ball.this.getX() + Vx);
Ball.this.setY(Ball.this.getY() - Vy);
counter += 50;
if (counter == 1000) {
t--;
counter = 0;
}
paintingComponent.repaint();
Thread.sleep(20);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
ball.start();
}
Когда я выполнить приведенный выше код этикетки для отображения времени, прошедшего именно не меняется вообще во время шара, и когда движение закончено, он принимает последний номер, который он должен принять.
Вы должны использовать качели таймер для обновления оба. Вы можете создать несколько таймеров Swing, если вам это проще – ControlAltDel
Является ли метка изменением своего значения, если вы не запустили «шаровую нить»? – Supahupe
Да, он меняет свое значение, когда я не запускаю шаровую нить. – Hunk