繁体   English   中英

Java JOptionPane中的自动更新计时器

[英]Auto Updating Timer in JOptionPane in Java

我已经搜索过,但是找不到适合我需要的任何东西。 我正在做一个计时器,并且是Java的初学者。 我已经制作了计时器,并且可以使用,但是我想在窗户上说剩余时间。 这是我所拥有的:

    package simpletimer;
import javax.swing.JOptionPane;
public class SimpleTimer {
    public static void main(String[] args) throws InterruptedException {
        JOptionPane.showMessageDialog(null, "Simple Timer By - -","Simple Timer", JOptionPane.INFORMATION_MESSAGE);
        double h = Integer.parseInt(JOptionPane.showInputDialog(null,"Hours:","Simple Timer",JOptionPane.PLAIN_MESSAGE));
        double m = Integer.parseInt(JOptionPane.showInputDialog(null,"Minutes:","Simple Timer",JOptionPane.PLAIN_MESSAGE));
        double s = Integer.parseInt(JOptionPane.showInputDialog(null,"Seconds:","Simple Timer",JOptionPane.PLAIN_MESSAGE));
        String Time = "Ok! The Simple Timer will go off in " + h + "h " + m + "m " + s + "s.";
        String[] Option1 = {"Start Timer"};
        JOptionPane.showOptionDialog(null, Time,"Simple Timer",JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE,null,Option1,"Start Timer");
        while(s > 0){
            Thread.sleep(1000);
            s = s - 1;
        }
        while(m > 0){
            m = m - 1;
            s = s + 59;
            Thread.sleep(60000);
        }
        while(h > 0){
            h = h - 1;
            m = m + 59;
            s = s + 59;
            Thread.sleep(3600000);
        }
        do{
                    JOptionPane.showMessageDialog(null, "Simple Timer Done!", "Simple Timer", JOptionPane.INFORMATION_MESSAGE);
        }while(h < 1 && m < 1 && s < 1);
    }
}

我解决了自己的问题。 我通过使用JFrame做到了这一点。 这是一个示例:

JFrame Main = new JFrame();
    JLabel Label = new JLabel();
    Main.add(Label);
    Main.setVisible(true);
    Main.setResizable(false);
    Main.setBounds(0, 0, 480, 200);
    Main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Label.setText("Time Left: " + h + ":" + m + ":" + s + ".");
    Label.setFont(Label.getFont().deriveFont(48f));
    while(s > 0){
        s = (short) (s - 1);
        Label.setText("Time Left: " + h + ":" + m + ":" + s + ".");
        Thread.sleep(1000);
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM