首页 > 解决方案 > 是否可以同时显示 2 帧?

问题描述

所以我正在做一个小测验。它已经完成了,但我仍在向其中添加一些东西。每次出现问题时,我都想在其上添加一个倒计时的计时器。我已经单独创建了该倒计时,现在我正在尝试将其添加到不同的框架中。

我的问题是,是否可以将一个框架(计时器)添加到另一个框架(问题+答案)上?

我用 JFrame 做了所有事情!

这是倒计时的代码:

 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);
    }
}

标签: javaeclipsejframejpanel

解决方案


也许是因为您的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看到了吗?


推荐阅读