пишу программу в которой по нажатию на кнопку в течении 5 секунд должны появиться квадраты на экране
https://youtu.be/o1uZzNM1EjQ (видео в котором показываю проблему)
int number = 1;
private void onbutton1(ActionEvent actionEvent) throws InterruptedException {
for (int i= 5; i>0; i--) {
if (number==1){firstLabel();}
if (number==2) {secondtLabel();}
if (number==3) {thirtdtLabel();}
if (number==4) {fourLabel();}
if (number==5) {fiveLabel();}
number=number+1;
Thread.sleep(1000);
System.out.println("1");
}
};
private void firstLabel() {
first.setIcon(new ImageIcon("src/green.png"));
};
private void secondtLabel() {
second.setIcon(new ImageIcon("src/green.png"));
};
private void thirtdtLabel() {
third .setIcon(new ImageIcon("src/green.png"));
};
private void fourLabel() {
four.setIcon(new ImageIcon("src/green.png"));
};
private void fiveLabel() {
five.setIcon(new ImageIcon("src/green.png"));
};
Evgeny Kost
0 уровень
не работает функция Thread.sleep();
Обсуждается
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #2322530
8 мая 2021, 14:52
ну на видео Thread.sleep как раз работает)
убери эту строку, и запусти заново) увидишь разницу.
0
Evgeny Kost
8 мая 2021, 16:11
так мне надо что бы оно вывело 1 квадрат ждало секунду , потом 2 квадрат ждало секунду и тд
0
hidden #2322530
8 мая 2021, 16:17
твой вопрос:
не работает функция Thread.sleep();
я тебе говорю, работает. иначе бы эта строка у тебя вызвалась моментально 5 раз:
не видя всех классов, я не могу тебе подсказать почему у тебя показывается в конце 5 сразу. видимо потому что View апдейтится у тебя только после того, как отработает этот метод onbutton1
хорошо бы делать рефреш экрана перед sleep 0
Evgeny Kost
8 мая 2021, 18:06
package com.company;
import javax.swing.*;
import java.awt.event.ActionEvent;
public class Game extends JFrame {
private JPanel Main;
private JLabel first;
private JLabel second;
private JLabel third;
private JLabel four;
private JLabel five;
private JButton button1;
public Game() {
setContentPane(Main);
setSize(1050, 350);
setVisible(true);
button1.addActionListener(actionEvent -> {
try {
onbutton1(actionEvent);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
}
int number = 1;
private void onbutton1(ActionEvent actionEvent) throws InterruptedException {
for (int i= 5; i>0; i--) {
if (number==1){firstLabel();}
if (number==2) {secondtLabel();}
if (number==3) {thirtdtLabel();}
if (number==4) {fourLabel();}
if (number==5) {fiveLabel();}
number=number+1;
Thread.sleep(1000);
System.out.println("1");
}
};
private void firstLabel() {
first.setIcon(new ImageIcon("src/green.png"));
};
private void secondtLabel() {
second.setIcon(new ImageIcon("src/green.png"));
};
private void thirtdtLabel() {
third .setIcon(new ImageIcon("src/green.png"));
};
private void fourLabel() {
four.setIcon(new ImageIcon("src/green.png"));
};
private void fiveLabel() {
five.setIcon(new ImageIcon("src/green.png"));
};
}
MAIN
package com.company;
public class Main {
public static void main(String[] args) {
Game game = new Game();
//Bar bar = new Bar();
}
}
0
Evgeny Kost
8 мая 2021, 20:08
Да, оно обновляется после выполнения, а как это модно исправить?
0
hidden #2322530
8 мая 2021, 20:14
не знаю, мне gui не интересен, это прошлый век.
0