2017-03-20 22 views
1

こんにちは、私のタイマーがリセットされる「リセットボタン」を作成したい。私は新しいボタンを作成し、それを "リセット"と名づけました。コード "tm2.restart();を使用します。私の作成したNew Buttonでは動作しません。これは私のコードです:私は、顧客がで歩いていくことを「サイバーカフェ管理アプリケーション」を作成し、彼の/を記録していますので、タイマーのJava GUIでタイマーをリセットし、停止後にメッセージを表示する方法

import javax.swing.Timer; 
public class deploy extends JFrame { 

private int seconds; 
private SimpleDateFormat df; 
private boolean isRunning; 
private JLabel lblTimer1; 
private JButton btnStart1; 

public deploy() { 

lblTimer1 = new JLabel("New label"); 
lblTimer1.setForeground(Color.WHITE); 
lblTimer1.setFont(new Font("Tahoma", Font.PLAIN, 20)); 
lblTimer1.setBounds(100, 231, 94, 16); 
contentPane.add(lblTimer1); 

Timer tm2 = new Timer(1000, new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       setTimer(); 
       seconds++; 
      } 
     }); 

btnStart1 = new JButton("Start"); 
btnStart1.setBackground(Color.LIGHT_GRAY); 
btnStart1.setForeground(Color.BLUE); 
btnStart1.addActionListener(new ActionListener() { 
    @Override 
      public void actionPerformed(ActionEvent e) { 

       if(isRunning) { 
        tm2.stop(); 
        btnStart1.setText("Start"); 
       }else { 
        tm2.start(); 
        btnStart1.setText("Stop"); 
       } 

       isRunning = !isRunning; 
      } 
     }); 

私のようなものは、「てSimpleDateFormat」(午前0時00分00秒)としてフォーマットされます彼/彼女がログアウトし、彼/彼女が報われる金額のメッセージを表示するまでの彼女の時間。助けてください。おかげ

+1

)は'そのコードに... [MCVE]を提供してください。 – Fildor

+1

ところで、タイマーを使ってタイムパンを追跡することは、実際にはアイデアの中で最善の方法ではありません.2つのタイムスタンプ(ログイン時、ログアウト時)を記録し、必要なときにdiffを計算するだけです。 – Fildor

+0

@Fildor私はtm2.restart()の形式でコードを含めません。それは働いていないので私は削除します.. –

答えて

1

レビューコードと不明であるものを尋ねることを躊躇しない:私は `tm2.restartを(表示されていない

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Font; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.TimeZone; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.Timer; 
import javax.swing.border.EmptyBorder; 
public class Deploy extends JFrame { 

    private int seconds; 
    private SimpleDateFormat df; 
    private JLabel lblTimer; 
    private Timer timer; 
    private JButton startButton; 

    public Deploy() { 

     JPanel contentPane = new JPanel(); 
     contentPane.setBackground(Color.DARK_GRAY); 
     contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
     setContentPane(contentPane); 
     contentPane.setLayout(new BorderLayout()); 

     lblTimer = new JLabel(); 
     lblTimer.setForeground(Color.WHITE); 
     lblTimer.setFont(new Font("Tahoma", Font.PLAIN, 20)); 
     lblTimer.setPreferredSize(new Dimension(100,30)); 
     contentPane.add(lblTimer,BorderLayout.NORTH); 

     timer = new Timer(1000, new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       setTimer(); 
       seconds++; 
      } 
     }); 

     JPanel buttonsPanel = new JPanel(); 
     contentPane.add(buttonsPanel, BorderLayout.SOUTH); 

     startButton = new JButton("Start"); 
     startButton.setBackground(Color.LIGHT_GRAY); 
     startButton.setForeground(Color.BLUE); 
     startButton.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 

       if(timer.isRunning()) { 
        timer.stop(); 
        startButton.setText("Start"); 
       }else { 
        timer.start(); 
        startButton.setText("Stop"); 
       } 
      } 
     }); 

     startButton.setPreferredSize(new Dimension(100,30)); 
     buttonsPanel.add(startButton); 

     JButton resetButton = new JButton("Reset"); 
     resetButton.setBackground(Color.LIGHT_GRAY); 
     resetButton.setForeground(Color.RED); 
     resetButton.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       resetTimer(); 
      } 
     }); 
     resetButton.setPreferredSize(new Dimension(100,30)); 
     buttonsPanel.add(resetButton); 

     df = new SimpleDateFormat("HH:mm:ss"); // HH for 0-23 
     df.setTimeZone(TimeZone.getTimeZone("GMT")); 

     resetTimer(); 
     pack(); 
     setVisible(true); 
    } 

    private void setTimer() { 
     Date d = new Date(seconds * 1000L); 
     String time = df.format(d); 
     lblTimer.setText(time); 
    } 

    private void resetTimer() { 

     if(timer.isRunning()) { 
      timer.stop(); 
     } 
     startButton.setText("Start"); 
     seconds = 0; 
     setTimer(); 
    } 

    public static void main(String[] args) { 
     new Deploy(); 
    } 
} 
+0

これは現在動作しています..ありがとう –

関連する問題