Таймер в Swing - Java

  1. не могу разобраться, как поставить таймер что бы по прошествию времени указанном в jTextField1 нажималась кнопка


textual

Код к задаче: «Таймер в Swing - Java»

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
 
public class MainButton2 extends JFrame {
    private JButton jButton;
    private JButton jButton2;
    private JTextField jTextField;
    private JTextField jTextField2;
    private Timer timer;
    private int counter;
    private int counterMax;
    private final int MAX_TIME = 200;
 
    public MainButton2() throws HeadlessException {
        timer = new Timer(20, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                counter++;
 
                jTextField.setText("count:" + counter);
 
                if (counter >= counterMax) {
                    counter = 0;
                    timer.stop();
                    jButton2.doClick();
                }
 
            }
        });
 
 
        jButton = new JButton("Start Timer");
        jButton2 = new JButton("Press Me");
 
        jButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
 
                timer.start();
                if (counterMax == 0) {
                    counterMax = MAX_TIME;
                }
                jTextField2.setText("" + counterMax);
            }
        });
 
 
        jButton2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(getContentPane(), " Таймер сработал! ");
            }
        });
        jTextField = new JTextField(10);
        jTextField2 = new JTextField(10);
 
 
        jTextField2.addFocusListener(new FocusListener() {
            @Override
            public void focusGained(FocusEvent e) {
            }
 
            @Override
            public void focusLost(FocusEvent e) {
                try {
                    counterMax = Integer.parseInt(((JTextField) e.getSource()).getText());
                } catch (NumberFormatException ex) {
                    JOptionPane.showMessageDialog(getContentPane(), " Wrong value, enter time! ");
                }
 
            }
        });
        jTextField2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
 
                try {
                    counterMax = Integer.parseInt(((JTextField) e.getSource()).getText());
                } catch (NumberFormatException ex) {
                    JOptionPane.showMessageDialog(getContentPane(), " Wrong value, enter time! ");
                }
            }
        });
 
        JPanel jp = new JPanel(new GridLayout(4, 4));
        jp.add(new JLabel("Enter Time: "));
        jp.add(jTextField2);
        jp.add(new JLabel("Status:"));
        jp.add(jTextField);
        jp.add(jButton);
        jp.add(jButton2);
        add(jp, BorderLayout.NORTH);
 
 
    }
 
 
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame jFrame = new MainButton2();
                jFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
                jFrame.setSize(400, 200);
                jFrame.setLocationRelativeTo(null);
                jFrame.setVisible(true);
 
 
            }
        });
    }
}

СДЕЛАЙТЕ РЕПОСТ

10   голосов, оценка 4.100 из 5



Похожие ответы
  1. Можете написать несколько строк кода, которые реагируют на нажатие клавиш? Напишу на русском, т.к. не совсем понимаю: public void keyPressed{ если нажали на кнопку "вверх" переменная х=1; если нажали на кнопку "вниз" переменная х=-1; если нажали на кнопку "вправо" переменная у=1; если нажали на кнопку "влево" переменная у=-1; } Помогите пожалуйста реализовать

  1. Господа, я поставил JTable на фрейм, сетку включил, первый столбец уменьшил, подскажите пожалуйста, как выравнить по центру текст в ячейках и поменять фон больших ячеек в шахматном порядке?

  1. Господа, Я вывожу данные в таблицу T1(JTable), cvet2 -это новый символ, который я ввожу в таблицу. Мне нужно что бы на каждой итерации цикла я бы видел изменения в таблице, а не только конечный результат. Подскажите, пожалуйста, как обновлять данные в таблице во время выполнения программы?

  1. Здравствуйте! Нужна помощь!Я программирую калькулятор и мне стало интересно каким образом можно вывести диалоговое окно, если в JTextField появилась, допустим цифра 30? Я пытался сделать вот так, но ничего не происходит, не пойму почему. Буду признателен за помощь)

  1. Друзья, здравствуйте! Я новичок, как на данном форуме, так и в java (на стадии начального обучения). Потому прошу, не судите строго. Вопрос такой, есть код, в коде реализована форма авторизации, при правильном вводе данных открывается следующий за ней класс JFrame с соответствующим окном. Однако следующая строка кода не выполняется, почему?

  1. Как сделать, чтобы количество кликов отбражалось е в консоли, а в самом окне? Что добавить в код? Ответьте пожалуйста. Зарание спасибо.

  1. Хочу подсчитать количество кликов, это тестовый кусочек программы для другой проги. В чем собственно проблема. Имеется два класса: первый - где основная движуха Main, второй - класс для обработки события, в частности клика мышки. Если писать класс один за другим, то все работает в порядке, но в главном классе тогда нет доступа к переменной sum, в которой сохранено количество кликов. Если же поместить класс-обработчик внутрь главного класса, то переменная станет доступной, но почему-то в строке "MyMouse listener = new MyMouse();" выдается ошибка, подчеркнуто все что после знака равно. Пишет: "'Main.this' cannot be referenced from a static context". Объясните пожалуйста, что это значит и как решить эту проблему. Заранее благодарен.

  1. Есть код запроса в удаленную БД. Как сделать так, чтобы в случае любой ошибки в этом участке кода появлялось окно с ошибкой, или хотя бы со стандартной фразой любого содержания? Чтобы пользователь понял, что что-то не так.Кроме того, При нажатии на кнопку, выполняется этот класс и кнопка меняет свое лого. Класс и кнопка связаны ActionListener. Можно ли сделать так, чтобы в случае ошибки кнопка не менялась на другу. сам класс:

  1. Доброго времени суток! проблема такая, что при старте игры не хочет перерисовывается экран Вот класс JPannal'a Если активный игровой процесс, то рисуем его, иначе рисуем активное меню. Кликните здесь для просмотра всего текста