更新时间:2023-12-03 23:05:52
而(true)
而是在它的位置使用Swing Timer,因为这就是Timer的用途 - 在Swing GUI中重复进行调用 必须诉诸破解而(真实)
构建。while (true)
and instead use the Swing Timer in its place since that is what the Timer is for -- to repeatedly make calls in a Swing GUI without having to resort to a thread-breaking while (true)
construct.例如:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.Timer;
class Lsen implements ActionListener {
public static final int MSECS_PER_SEC = 1000;
public static final int SECS_PER_MIN = 60;
public static final int MIN_PER_HR = 60;
private static final String TIME_FORMAT = "%02d:%02d:%02d:%03d";
private long startTime;
private JTextField timeField;
public Lsen(JTextField timeField) {
this.timeField = timeField;
}
public void actionPerformed(ActionEvent e) {
if (startTime == 0L) {
startTime = System.currentTimeMillis();
} else {
long currentTime = System.currentTimeMillis();
int diffTime = (int) (currentTime - startTime);
int mSecs = diffTime % MSECS_PER_SEC;
diffTime /= MSECS_PER_SEC;
int sec = diffTime % SECS_PER_MIN;
diffTime /= SECS_PER_MIN;
int min = diffTime % MIN_PER_HR;
diffTime /= MIN_PER_HR;
int hours = diffTime;
String time = String.format(TIME_FORMAT, hours, min, sec, mSecs);
// System.out.println("Time: " + time);
timeField.setText(time);
}
}
}
public class StopWatchMain {
private static final int TIMER_DELAY = 15;
public static void main(String[] args) {
final JTextField timeField = new JTextField(10);
timeField.setEditable(false);
timeField.setFocusable(false);
JPanel panel = new JPanel();
panel.add(new JLabel("Elapsed Time:"));
panel.add(timeField);
Lsen l = new Lsen(timeField);
Timer t = new Timer(TIMER_DELAY, l);
t.start();
JOptionPane.showMessageDialog(null, panel);
t.stop();
}
}
修改
您询问长数据类型的含义。请看这里:原始数据类型。你会看到long意味着长整数,所以你可以认为它类似于int但能够容忍更大的正负值而不会溢出。
Edit
You ask about the meaning of the long data type. Please have a look here: Primitive Data Types. You'll see that long means long integer, and so you can think of it as being similar to int but able to tolerate much larger positive and negative values without overflowing.