gpt4 book ai didi

java - 单击按钮时将 JLabel 转换为计时器

转载 作者:行者123 更新时间:2023-12-02 09:22:35 24 4
gpt4 key购买 nike

在我的应用程序中,我创建了一个timerLabel和timerPanel,如下所示:

// Add timer panel
JPanel timerPanel = new JPanel();
timerPanel.setBorder(new EmptyBorder(0, 0, 0, 0));
timerPanel.setBackground(new Color(0x757575));
c.gridx = 0;
c.fill = GridBagConstraints.HORIZONTAL;
c.insets = new Insets(0,0,0,20);
c.gridy = 0;
centerPanel.add(timerPanel, c);

// Add timer label
JLabel timerLabel = new JLabel("00:00", SwingConstants.RIGHT);
timerLabel.setForeground(Color.black);
timerLabel.setFont(new Font("Serif", Font.BOLD, 30));
timerLabel.setHorizontalAlignment(JLabel.RIGHT);
c.gridx = 1;
c.fill = GridBagConstraints.HORIZONTAL;
c.gridy = 0;
timerLabel.setForeground(Color.white);
timerPanel.add(timerLabel, c);

我希望每当用户单击“开始”并重新启动按钮时,计时器就会从 60 秒开始倒计时。下面是我实现的 ActionListener。现在我不确定如何做到这一点:

  private class ButtonHandler implements ActionListener {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {

// The text from the button that the user clicked.
String cmd = e.getActionCommand();

// Respond to Quit button by ending the program.
if (cmd.equals(GuiText.START.toString())) {
startGame();
// start the timer here
} else if (cmd.equals(GuiText.PREVIOUS.toString())) {
QuestionList.selectRandomQuestion();
questionLabel.setText(message);
// reset the timer here
} else if (cmd.equals(GuiText.NEXT.toString())) {
QuestionList.selectRandomQuestion();
questionLabel.setText(message);
// reset the timer here
} else {
textArea.setText(cmd);
}
// Causes the display to be redrawn, to show any changes made.
display.repaint();
}
}

最后,我需要一种方法来跟踪计时器何时为零,并在它确实能够调用方法时“做某事”?我怎样才能做到这一点?我的完整代码可以在这里找到(用于上下文):https://pastebin.com/44XWxTQt 。感谢您的时间和帮助。

最佳答案

任何涉及更新 Swing 组件的事情都应该围绕 javax.swing.Timer 进行。它有 start()/stop() 方法来调用按钮点击。还可以通过构造函数进行配置,每秒调用它自己的 actionPerformed 方法(这样您就可以更新 JLabel 并重新绘制)。

https://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html

关于java - 单击按钮时将 JLabel 转换为计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58581909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com