如何使显示的两个按钮重置/暂停计时器?计时器可以工作,但我想更改按钮的代码,以便它们更改计时器而不是输出到控制台。谢谢。
代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class createWindow extends JFrame implements ActionListener
{
public static void main(String[] args)
{
new createWindow();
}//end main
createWindow()
{
super("Frame");
setSize(400,70);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
show();
final JLabel time = new JLabel("Timer");
JButton reset = new JButton("Reset timer");
JButton pause = new JButton("Pause timer");
reset.setActionCommand("resetClicked");
pause.setActionCommand("pauseClicked");
reset.addActionListener(this);
pause.addActionListener(this);
add(pause);
add(time);
add(reset);
long start = System.currentTimeMillis();
while (true)
{
long timer = System.currentTimeMillis() - start;
final int seconds = (int) (timer / 1000);
String display = Integer.toString(seconds);
time.setText(display);
}//end while loop
}//end constructor
@Override
public void actionPerformed(ActionEvent e)
{
String buttonClicked = e.getActionCommand();
if(buttonClicked.equals("resetClicked"))
{
System.out.println("The reset button was clicked"); //Change to reset timer
}
else if(buttonClicked.equals("pauseClicked"))
{
System.out.println("The pause button was clicked"); //Change to pause timer
}
}//end listener
}
最佳答案
不要使用无限的 while
循环。这会阻止EDT
。而是使用 Swing Timer 。这将使您能够控制启动和停止计时器
。
附注:
- 不要使用
JFrame.show
,因为该方法已弃用。请改用 JFrame.setVisible。当所有组件都添加到框架中时,也进行此调用。 JButtons
的功能有很大不同,因此需要为每个按钮使用单独的ActionListener
实例。- 首选方法是直接使用
JFrame
实例,而不是扩展它。 - Java 中的类名称以大写字母开头,因此
createWindow
将变为CreateWindow
。
关于java - 如何创建重置和暂停计时器的按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14630323/