Итак, я хотел выполнить действие, а затем приостановить на некоторое время, а затем завершить другое действие. Я слышал, что Thread.sleep()
не очень хорошо, потому что он замерзает gui или что-то в этом роде до завершения задачи. Я знаю, что мне нужно использовать javax.swing.Timer
или java.util.Timer
для одной задачи выполнения, но я действительно не понимаю, как это сделать. Вот код. Кредит - JButton
.Как использовать Swing Timer ActionListener
Credits.addActionListener(new ActionListener() {
public void actionPerformed (ActionEvent e){
Credits.setVisible(false);
Oracle.setBounds(550,280,500,500);
Oracle.setFont(new java.awt.Font("Arial", Font.BOLD, 40));
Oracle.setForeground(new java.awt.Color(240,240,240));
Oracle.setText("Credits To:");
// I want to wait or pause or sleep for 5000 milliseconds
// Then Change The Icon
TimeClassAdd tcAdd = new TimeClassAdd();
timer = new Timer(1000, tcAdd);
timer.start();
timerLabel.setText("IT HAS BEGUN");
long stopTime = System.currentTimeMillis();
long elapsedTime = stopTime - startTime;
while (elaspedTime >= 5000) {
break;}
Oracle.setIcon(OraclePNG);
}});
Я не вижу попытки попытаться использовать таймер в вашем коде. Пожалуйста, давайте посмотрим, что вы узнали из учебников, и, пожалуйста, покажите нам, в чем проблема, с которой вы столкнулись. Также, чтобы помочь нам сейчас и помочь себе в будущем, пожалуйста, отредактируйте свой код и измените имена переменных, чтобы они соответствовали соглашениям об именах Java: имена классов начинаются с имени письма в верхнем регистре и имени метода/переменной с буквой в нижнем регистре , Это значительно облегчит другим (** нам **), чтобы лучше понять ваш код. –
Кроме того, что такое Oracle? Другой JButton? JLabel? Если это другой компонент, такой как JLabel, вам, вероятно, лучше использовать CardLayout (и таймер Swing) для замены компонентов. –
Oracle is jlabel –