【发布时间】:2014-10-02 23:06:13
【问题描述】:
我有一个小问题,请让我解释一下场景。我有一个swing jframe,其中我有一个名为“start”的按钮,它以秒为单位启动计时器,所以每当我点击开始时,它会将按钮本身转换为“reset”,这应该使秒数为零,并且应该再次将自身转换为“开始”。我担心这两种情况我必须运行两组代码,我使用了两个实现 ActionListener 接口的类有没有办法将这两组代码包含在实现 ActionListener 的同一个类中,并切换代码块取决于一个布尔变量,该变量会随着按钮的变化而改变其值。
我试过了,但我遇到了性能问题,比如冻结应用程序,甚至无法完全按预期工作。
请在下面查看我的代码。
public class SuperTimer extends JFrame
{
JButton start;
private final StartCountDown countdown;
public SuperTimer()
{
countdown= new StartCountDown();
start.addActionListener(countdown);
}
public class StartCountDown implements ActionListener
{
public void actionPerformed(ActionEvent l)
{
if(l.getSource()==start)
{
count = Long.parseLong(input.getText());
start.setText("Reset");
reset = new Reset();
start.removeActionListener(countdown);
start.addActionListener(reset);
invalid.setVisible(false);
}
TimeClass tc = new TimeClass(count);
timer = new Timer(1000,tc);
timer.start();
}
}
public class Reset implements ActionListener
{
public void actionPerformed(ActionEvent j)
{
start.setText("Start");
time.setText("00:00:00");
input.setText("");
timer.stop();
timeup.setVisible(false);
start.removeActionListener(reset);
start.addActionListener(countdown);
}
}
}**
【问题讨论】:
-
@HovercraftFullOfEels 我很抱歉。您的回答帮助我更轻松地构建我的应用程序。再次抱歉,我不知道堆栈溢出的规则,因为我是这个论坛的新手。非常感谢您的帮助。
-
没关系。谢谢回复。我们是志愿者,不希望忽视我们的努力,因此您的回复可能意义重大。
标签: java swing actionlistener abstract-action action-interface