Как сделать таймер для GUI в Java?

113
12 ноября 2019, 14:00

Есть код, последовательность операций.

В частности, одна из операций - отобразить окно коммуникации, и - либо получить ответ от пользователя (keyTyped) и закрыть окно, либо закрыть окно по истечении 500 миллисекунд, если ответа нет.

Каким образом отмерить эти 500 мс, оставляя окно функциональным?

Answer 1

Как раз для таких целей есть javax.swing.Timer:

JOptionPane optionPane = new JOptionPane();
Timer timer = new Timer(3000, e -> {
    optionPane.setVisible(false);
    optionPane.getRootFrame().dispose();
});
timer.setRepeats(false);
timer.start();
int n = optionPane.showConfirmDialog(null, "Hello?", "Demo", JOptionPane.YES_NO_OPTION);
Answer 2

Вот такой вариант с javax.swing.Timer

public class TimeoutFrame extends JFrame  { 
 
    public static void main(String[] args) { 
        new TimeoutFrame(2500); 
    } 
 
    public TimeoutFrame(int timeout) { 
        setLayout(new FlowLayout()); 
        setSize(new Dimension(200,100)); 
        setLocationRelativeTo(null); 
        add(new JLabel("type key")); 
         
        addKeyListener(new KeyAdapter() { 
            @Override 
            public void keyTyped(KeyEvent e) { 
                System.out.println("keyTyped"); 
                dispose(); 
            } 
        }); 
         
        Timer timer = new Timer(timeout, e -> { 
            System.out.println("timeout"); 
            dispose(); 
        }); 
         
        timer.setRepeats(false); 
        timer.start(); 
        setVisible(true); 
    } 
}

Answer 3

Должно сработать

new Thread() {
            @Override
            public void run() {
                try {
                    sleep(500);
                    //closeWindow
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }.start();
READ ALSO
Аутентификация с помощью Java приложения

Аутентификация с помощью Java приложения

Помогите пожалуйста разобратьсяСтоит задача отправить xml файл используя моё WEB приложение в другое WEB приложение

124
Как грамотно реализовать Single Activity Architecture?

Как грамотно реализовать Single Activity Architecture?

Подскажите пожалуйста: Есть небольшое корпоративное приложение, с семью вкладками в навигационном менюКаждая вкладка это отдельное активити,...

103
Распознавание редактируемого фото

Распознавание редактируемого фото

Какие есть API сервисы для распознания было ли фото отредактировано?

117