想要启动线程时钟而不首先点击某个东西并发出警报吗

aamkag61  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(328)

你好,我想做一个线程显示时钟,但与此代码我只能使时钟运行后设置输入闹钟,虽然闹钟也没有工作。想把闹钟和闹钟分开吗
这是钟(正在工作)

public class ClockAlarm extends Thread{

private String txt;  
private JLabel Clock;
ClockAlarm(JLabel lbl) {
    this.Clock = lbl;
}

ClockAlarm(){
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
public void run()
    {
        while(true)
        {
            try
            {
                SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
                Date date = new Date();
                String s = sdf.format(date);
                Thread.sleep(1000);

                Clock.setText(s);
            }
            catch(Exception e){}

        }
}

}

这是gui,idk,当它与时钟相等时,在哪里放置警报验证,我不知道在哪里放置mythread.start或在运行时可以启动它的过程

public class GUI extends javax.swing.JFrame {
        ClockAlarm myThread1;
        String Alarm;

        /**
         * Creates new form GUI
         */
        public GUI() {
            initComponents();
        }
        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            // TODO add your handling code here:
            if(jButton1.getText().equalsIgnoreCase("Set Alarm (hh:mm:ss)")){
                Alarm = jTextField1.getText();
            }
            myThread1 = new ClockAlarm(jLabel1);
            myThread1.start();

        }                                        

        private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
            // TODO add your handling code here:

        }                                           

    public static void main(String args[]) {

            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new GUI().setVisible(true);

                }

            });
        }

        // Variables declaration - do not modify                     
        private javax.swing.JButton jButton1;
        private javax.swing.JLabel jLabel1;
        private javax.swing.JPanel jPanel1;
        private javax.swing.JTextField jTextField1;
        // End of variables declaration                   
    }
pprl5pva

pprl5pva1#

public class GUI extends JFrame implements ActionListener{

    public GUI() {
         jLabel1=new JLabel();
    }

    @Override
    public void actionPerformed(ActionEvent e) {

        if(e.getSource()==jButton1)
        {
               new ClockThread(jLabel1).execute();
        }

    }

public static void main(String args[]) {
        GUI gu=new GUI();
        gu.setVisible(true);
    }

}

public class ClockThread extends SwingWorker<String, String> {

private JLabel clock;
private String msg;

public ClockThread(JLabel clock) {
    this.clock = clock;
}

@Override
protected void done() {
    try {
        msg = get();
        if (SwingUtilities.isEventDispatchThread()) {
            clock.setText(msg);
        }
    } catch (Exception e) {
    }
}

@Override
protected void process(List<String> res) {
    super.process(res);
    for (String result : res) {
        if (SwingUtilities.isEventDispatchThread()) {
            clock.setText(result);
            clock.revalidate();
        }
    }
}

@Override
public String doInBackground() {
    String s = "";
    while (true) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
            Date date = new Date();
            s = sdf.format(date);
            Thread.sleep(1000);
            publish(s);
        } catch (Exception e) {
            return s;
        }
    }
}
}

相关问题