Можно ли показывать 2 кадра одновременно? - PullRequest
0 голосов
/ 28 марта 2019

Итак, я работаю над небольшим тестом.Это закончено, но я все еще добавляю кое-что в это.Каждый раз, когда появляется вопрос, я хочу добавить на него таймер с обратным отсчетом.Я создал этот отсчет отдельно и сейчас пытаюсь добавить его в разные кадры.

Мой вопрос: возможно ли добавить кадр (таймер) в другой кадр (вопросы + ответы)?

Я все сделал с JFrames!

Вот код для обратного отсчета:

 public class timer extends JFrame {

    public timer() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new BorderLayout());
        frame.add(new TestPane());
        frame.pack();
        frame.setVisible(true);
    }
}

class TestPane extends JPanel {
    JLabel label;
    Timer timer;
    int count;
    public TestPane() {
        label = new JLabel("...");
        setLayout(new GridBagLayout());
        add(label);
        timer = new Timer(500, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                count++;
                if (count < 100000) {

                    try{
                        Thread.sleep(500);
                    }
                    catch(InterruptedException error){
                    }

                    label.setText(Integer.toString(count));

                } else {
                    ((Timer) (e.getSource())).stop();
                }
            }
        });
        timer.setInitialDelay(0);
        timer.start();
    }
    @Override
    public Dimension getPreferredSize() {
        return new Dimension(200, 200);
    }
}

1 Ответ

0 голосов
/ 28 марта 2019

Может быть, это потому, что у вас неправильное имя для класса Timer?

public class Timer extends JFrame {

    public Timer() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new BorderLayout());
        frame.add(new TestPane());
        frame.pack();
        frame.setVisible(true);
    }
}

Вы создаете новый экземпляр Timer в своем коде TestPane, но ваше имя класса timer видите?

...