java – 在JOptionPane中更新消息
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 在JOptionPane中更新消息,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1795字,纯文字阅读大概需要3分钟。
内容图文
![java – 在JOptionPane中更新消息](/upload/InfoBanner/zyjiaocheng/722/022b10f8026b44d3b8646119831c5e39.jpg)
我正在尝试制作一个在JOptionPane中显示时间的数字时钟.我已设法在消息对话框中显示时间.但是,我无法弄清楚如何让它在对话框中每秒更新一次.
这就是我目前拥有的:
Date now = Calendar.getInstance().getTime();
DateFormat time = new SimpleDateFormat("hh:mm:ss a.");
String s = time.format(now);
JLabel label = new JLabel(s, JLabel.CENTER);
label.setFont(new Font("DigifaceWide Regular", Font.PLAIN, 20));
Toolkit.getDefaultToolkit().beep();
int choice = JOptionPane.showConfirmDialog(null, label, "Alarm Clock", JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE);
解决方法:
这太可怕了,我觉得它应该更容易……
基本上,您需要某种“自动收报机”,您可以使用它来更新标签的文本……
public class OptionClock {
public static void main(String[] args) {
new OptionClock();
}
public OptionClock() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
Date now = Calendar.getInstance().getTime();
final DateFormat time = new SimpleDateFormat("hh:mm:ss a.");
String s = time.format(now);
final JLabel label = new JLabel(s, JLabel.CENTER);
label.setFont(new Font("DigifaceWide Regular", Font.PLAIN, 20));
Timer t = new Timer(500, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Date now = Calendar.getInstance().getTime();
label.setText(time.format(now));
}
});
t.setRepeats(true);
t.start();
int choice = JOptionPane.showConfirmDialog(null, label, "Alarm Clock", JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE);
t.stop();
}
});
}
}
因为我们不想违反Swing的单线程规则,所以最简单的解决方案是使用javax.swing.Timer,每500毫秒左右(捕获边缘情况).
通过虚拟设置标签的文本,它会自动发布重绘请求,这使我们的生活变得简单……
内容总结
以上是互联网集市为您收集整理的java – 在JOptionPane中更新消息全部内容,希望文章能够帮你解决java – 在JOptionPane中更新消息所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。