Java 秒表程序
我的JavaI类有一个秒表程序,它来自JavaFoundations3rdEditionPP6.22,我很难让它运行。我不确定哪里出了错。任何帮助破译的问题将不胜感激!该程序应该有一个3个按钮的设置,秒表以秒计,没有什么新奇的。我的按钮本身有问题,我无法让它们启动、停止和重置计时器。我使用Jgrasp作为我的编译器,它可以很好地编译。没有要报告的错误。我不确定我的if/else语句是否正确,或者我是否遗漏了不让计时器开始计数的内容。任务如下:设计并实现一个作为秒表的应用程序。包括以秒为单位显示时间增量的显示器。包括允许用户启动和停止时间以及将显示重置为零的按钮Java 秒表程序,java,swing,Java,Swing,我的JavaI类有一个秒表程序,它来自JavaFoundations3rdEditionPP6.22,我很难让它运行。我不确定哪里出了错。任何帮助破译的问题将不胜感激!该程序应该有一个3个按钮的设置,秒表以秒计,没有什么新奇的。我的按钮本身有问题,我无法让它们启动、停止和重置计时器。我使用Jgrasp作为我的编译器,它可以很好地编译。没有要报告的错误。我不确定我的if/else语句是否正确,或者我是否遗漏了不让计时器开始计数的内容。任务如下:设计并实现一个作为秒表的应用程序。包括以秒为单位显示时
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Assignment_6_22_Panel extends JPanel
{
private JButton start, stop, reset;
private JLabel label;
private JPanel buttonPanel;
private Timer timer;
private int time = 0;
private final int DELAY = 1000;
public Assignment_6_22_Panel()
{
label = new JLabel("Time: " + time);
setBackground(Color.white);
start = new JButton("Start");
stop = new JButton("Stop");
reset = new JButton("Reset");
ButtonListener listener = new ButtonListener();
TimeListener watchListener = new TimeListener();
timer = new Timer(DELAY, watchListener);
start.addActionListener(listener);
stop.addActionListener(listener);
reset.addActionListener(listener);
buttonPanel = new JPanel();
buttonPanel.setPreferredSize(new Dimension(200, 150));
buttonPanel.setBackground(Color.white);
buttonPanel.add(start);
buttonPanel.add(stop);
buttonPanel.add(reset);
add(buttonPanel);
add(label);
}
private class ButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
if (event.getSource() == start)
timer.start();
else
if (event.getSource() == stop)
timer.stop();
else
time = 0;
}
}
private class TimeListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
label = new JLabel("Your Time: " + time);
}
}
}
这是相邻的代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Assignment_6_22
{
//-----------------------------------------------------------------
// Displays the main frame of the program.
//-----------------------------------------------------------------
public static void main(String[] args)
{
JFrame frame = new JFrame("Stop Watch");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new Assignment_6_22_Panel());
frame.pack();
frame.setVisible(true);
}
}
您的
计时器
代码和按钮列表器
代码工作正常,问题在于您的计时器列表器
private class TimeListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
label = new JLabel("Your Time: " + time);
}
}
每次触发计时器
时,您都在创建JLabel
的新实例,这与屏幕上显示的内容无关,相反,您需要设置先前存在的标签的文本
另外,无需实际更新time
的值来显示时间的流逝
private class TimeListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
time++;
label.setText("Your Time: " + time);
}
}
当您重置计时器时,还应确保更新标签
private class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
if (event.getSource() == start) {
timer.start();
} else if (event.getSource() == stop) {
timer.stop();
} else {
time = 0;
label.setText("Your Time: " + time);
}
}
}
那你有什么问题?解释一下你的问题。你的程序是做什么的?它应该做什么?你有错误吗?如果是这样,请添加堆栈跟踪,并在代码中标记错误发生的位置。当您收到错误时,请包含准确的错误消息,而不仅仅是说“某处有错误”。错误消息包含一些重要信息,这些信息提示了错误所在和位置。对不起,我编辑了我的问题。非常感谢,我对这个网站和Java非常陌生。这非常有帮助。再次感谢你!