将帧中的计时器按钮添加到另一帧

时间:2014-01-12 23:01:30

标签: java swing time jframe

我想在我的主框架中添加一个计时器按钮,但它在另一个类中,我不知道如何在我的主类中使用它。 我的框架中需要一个计时器按钮但是如果没有其他课程我就无法完成。 在那堂课里,我无法打电话给我的主框架。 这是我的代码:

class ButtonTimer extends Thread{

private JButton button = new JButton(" ");
private int count = 1;
public ButtonTimer() {

    Timer time = new Timer(1000, new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            button.setText(String.valueOf(count));
            count++;

        }
    });

    time.start();

    JFrame frame1 = new JFrame();
    frame1.add(button);
    frame1.setBounds(0, 20, 100, 50);
    frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame1.pack();
    frame1.setVisible(true);
}
}

public class game {
public static void main(String[] args) {
    JFrame frame2 = new JFrame();
    frame2.setBounds(0, 0, 1000, 5000);
    frame2.setVisible(true);

    JLayeredPane jlp = new JLayeredPane();
    jlp.setBounds(0, 0, 1000, 500);

    frame2.add(jlp);

    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            new ButtonTimer();
        }
    });

}
}

我该怎么做?

2 个答案:

答案 0 :(得分:0)

你可以......

创建一个自定义JButton,在其内部包含Timer

这允许您将按钮和计时器自行包含在一个单元中,并在任何您想要的地方重复使用...

你可以......

创建一个自定义Timer,其中引用JButton并在每次触发时自动更新文字...

你可以......

创建一个自定义ActionListener甚至Action,引用JButton并更新文本,然后将其传递到您选择的Timer实例中。

答案 1 :(得分:0)

试一试。这里我们在你的主框架中创建一个JButton,然后我们在另一个类的actionPerformed上设置文本。

public class game1 {
    private static JFrame frame2;
    private static JButton button1=new JButton(" ");
public static void main(String[] args) {
    frame2 = new JFrame();
    frame2.setBounds(0, 0, 1000, 5000);

    JLayeredPane jlp = new JLayeredPane();
    jlp.setBounds(0, 0, 1000, 500);
    jlp.add(button1);
    frame2.add(jlp);

    frame2.add(button1);
    frame2.setVisible(true);
     SwingUtilities.invokeLater(new Runnable() {
        public void run() {
       new ButtonTimer();

     }
    });

}

    private static class ButtonTimer {
private JButton button = new JButton(" ");
private int count = 1;
public ButtonTimer() {

    javax.swing.Timer timer = new javax.swing.Timer(500, new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                     button.setText(String.valueOf(count));
                     button1.setText(String.valueOf(count));
            count++;
                }
            });
    timer.start();

    JFrame frame1 = new JFrame();
    frame1.add(button);
    frame1.setBounds(0, 20, 100, 50);
    frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame1.pack();
    frame1.setVisible(true);
}
    }
}