我想在我的主框架中添加一个计时器按钮,但它在另一个类中,我不知道如何在我的主类中使用它。 我的框架中需要一个计时器按钮但是如果没有其他课程我就无法完成。 在那堂课里,我无法打电话给我的主框架。 这是我的代码:
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();
}
});
}
}
我该怎么做?
答案 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);
}
}
}