gpt4 book ai didi

Java标签定时器和保存

转载 作者:行者123 更新时间:2023-12-01 08:14:22 25 4
gpt4 key购买 nike

让我解释一下我想要做什么。

我有两个扩展JFrame的类,StartJFrameTestingJFrame。在 main 方法中,我启动一个 StartJFrame。它有一个按钮,启动。当按下该按钮时,我将其设置为隐藏该框架并启动 TestingJFrame。现在我的 TestingJFrame 中没有任何内容。

在该屏幕中,我想在右下角有一个计时器标签,从 45 秒开始倒计时到 0。我还需要每十分之一秒运行一些代码,并收集一些代码数据。 TestingJFrame 中有两个按钮,Yes 和 No。按下其中之一时,应该停止计时器并保存信息。

数据基本上只是双倍。每次运行程序时我只会收集一次数据。我有一个 UserData 类,其中包含有关测试主题的一些信息,以及一个 double 列表,它每隔十分之一秒添加一次。我大致了解了如何在java中保存数据。

我的问题是,我应该如何设置计时器,以便它从 45 秒开始倒计时,当它达到 0 或用户按下是或否按钮时,它会调用一个函数来保存数据?我想我可以处理保存数据部分。

抱歉,如果这真的很简单,我是 Java(从 c#)的新手,Swing 一直让我有点困惑。

最佳答案

第一部分(显示倒计时和停止计时器)相对简单......

public class TimerTest01 {

public static void main(String[] args) {
new TimerTest01();
}

public TimerTest01() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception ex) {
}

JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);

}
});
}

public class TestPane extends JPanel {

private JLabel label;
private Timer timer;
private long startTime;

public TestPane() {
setLayout(new GridLayout(0, 1));
label = new JLabel("...");
label.setHorizontalAlignment(JLabel.CENTER);
final JButton btn = new JButton("Start");
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (timer.isRunning()) {
timer.stop();
btn.setText("Start");
} else {
startTime = System.currentTimeMillis();
timer.restart();
btn.setText("Stop");
}
repaint();
}
});
add(label);
add(btn);

timer = new Timer(250, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
long endTime = (startTime + 45000);
long timeLeft = endTime - System.currentTimeMillis();
if (timeLeft < 0) {
timer.stop();
label.setText("Expired");
btn.setText("Start");
} else {
label.setText(Long.toString(timeLeft / 1000));
}
repaint();
}
});
}
}
}

看看Swing Timer了解更多信息

您问题的第二部分过于模糊,无法可靠地为您提供答案。数据从哪里来?如何收集?

关于Java标签定时器和保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14678750/

25 4 0