2016-05-26 8 views
0


特定の時間後にコンピュータをシャットダウンするプログラムを作っていますが、タイマーのカウントダウンに問題があります。それはそれを取るスピナーの時間を減らさなければなりません。私は動的なダイアログアプリケーションを作ろうとしましたが、うまくいきません。私はすべての種類の助けを賞賛する。
これで十分でない場合はwhole codeを適用します。
ありがとうございます!Javaスイングカウントダウンタイマーが正常に動作する

timer.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
        //decrements the amount of seconds and the time in the spinners 
        m_secs--; 
        ShutDownDialog.this.AmountOfTime--; 
        if (m_secs<0) { 
         m_secs=59; 
         m_mins--; 

         if (m_mins<0) { 
          m_mins=59; 
          m_hours--; 

          if(m_hours<0) 
           m_hours=0; 
         } 
         hours.setValue((Integer)m_hours); 
         minutes.setValue((Integer)m_mins); 
         seconds.setValue((Integer)m_secs); 
         label_2.setText(ShutDownDialog.  
         this.AmountOfTime.toString()); 
        } 
        if (ShutDownDialog.this.AmountOfTime< 0) 
         { 
         timer.stop(); 
         label_2.setText("stop"); //just to check what happens 
         } 
       } 
      }); 

      StartCountdown.addMouseListener(new MouseAdapter() { 
       @Override 
       public void mouseClicked(MouseEvent arg0) { 
        hours.setEnabled(false); 
        minutes.setEnabled(false); 
        seconds.setEnabled(false); 
        StartCountdown.setEnabled(false); 
        StopCount.setEnabled(true); 
        //calculates the amount of seconds and starts the timer 
        m_hours = ((Integer)hours.getValue()*3600); //get the hours 
        m_mins = ((Integer)minutes.getValue()*60); //get the minutes 
        m_secs = (Integer)seconds.getValue(); //get seconds 
        AmountOfTime = m_hours + m_mins + m_secs; 
        timer.start(); 
        //JOptionPane.showMessageDialog(null, AmountOfTime); 
       } 
      }); 
+0

、Timerクラスを使用して、シャットダウンのスケジュールを設定し、手動秒のカウントを忘れて、数分.... –

答えて

0

m_secs < 0の場合は、値のみを更新しています。もしブロックの外側

移動

hours.setValue((Integer) m_hours); 
minutes.setValue((Integer) m_mins); 
seconds.setValue((Integer) m_secs); 

、それはラベルを更新します。 それは次のようになります。

private void initialize() { 
    timer.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      m_secs--; 
      ShutDownDialog.this.AmountOfTime--; 
      if (m_secs<0) { 
       m_secs=59; 
       m_mins--; 

       if (m_mins<0) { 
        m_mins=59; 
        m_hours--; 

        if(m_hours<0) 
         m_hours=0; 
       } 
      } 
      hours.setValue((Integer) m_hours); 
      minutes.setValue((Integer) m_mins); 
      seconds.setValue((Integer) m_secs); 
      label_2.setText(ShutDownDialog.this.AmountOfTime.toString()); 
      if (ShutDownDialog.this.AmountOfTime< 0) 
       { 
       timer.stop(); 
       label_2.setText("stop"); 
       } 
     } 
    }); 
関連する問題