我必须创建一个复制秒表的Java Applet。到目前为止,我有一个带有开始/停止按钮的运行小程序。我不确定该怎么做是显示上升时间的进度,并在按下停止/启动按钮时停止。这是我的代码。谢谢!
package stopwatch;
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.time.Duration;
import java.time.LocalDateTime;
public class stopwatch extends Applet implements ActionListener {
private static final long serialVersionUID = 1L;
Button start;
Button stop;
LocalDateTime localdt0;
LocalDateTime localdt1;
public void init(){
start = new Button("Start");
stop = new Button("Stop");
setLayout(new BorderLayout());
//start.setBounds(new Rectangle(20, 20, 100, 30));
add(start, "North");
add(stop, "South");
stop.setEnabled(false);
start.addActionListener(this);
stop.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
Duration d;
String s;
if (e.getSource() == start) {
start.setEnabled(false);
stop.setEnabled(true);
localdt0 = LocalDateTime.now();
}
else {
stop.setEnabled(false);
start.setEnabled(true);
localdt1 = LocalDateTime.now();
d = Duration.between(localdt1, localdt0);
s = d.toString();
s += "";
}
}
// public void paint(Graphics g)
// {
//
// }
}
答案 0 :(得分:0)
我建议你通常将你的业务逻辑与GUI界面分开,所以如果我是你,我会创建一个处理它的那部分的StopWatch类,并简单地在这个gui中使用该对象与fx" start / stop& #34;方法
如何制作秒表类......好吧有几种方法。您可以使用一个start方法,该方法需要一定的秒数作为参数,在start方法中以毫秒为单位获取当前系统时间并运行一个循环,直到时间超过用户放入参数的时间。
基本上你得到以毫秒为单位的当前时间运行一个循环并在循环中做一个if句子,就像这样。
编辑:
还要记住,您的类可能需要扩展线程类,以便它可以与您的gui同时正常运行。
public void start(int amountOfTime) {
int startTime = System.currentTimeMillis();
while (some boolean is true) {
if (System.currentTimeMillis()>=startTime+(amountOfTime*1000)) boolean = false;
}
}
我在这里添加了一些代码,你应该能够根据自己的喜好进行纠正,然后找出其余部分。
至于停止它...你可以简单地使循环依赖于布尔值并使用stop方法或类似的东西来改变它。
至于以图形方式显示它......你可以插入一个标签并不断更新它。