2016-03-28 5 views
0

Привет, я хочу создать поток для отображения часов, но с помощью этого кода я могу только запустить часы после установки ввода сигнала тревоги, хотя будильник также не работает. Хотите сделать тревогу, отделенный от часовWanna Initiate Threaded Clock, не щелкая что-то первым и выдавать сигнал тревоги

Это часы (рабочий)

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, ИДК, где поставить проверку тревоги, когда его равно с часами, и я не знаю, где ставить 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     
    } 

ответ

0
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; 
     } 
    } 
} 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^