タイマーを作成しようと思いボタンでスタート&ストップ&リセットをしようと思ったのですが
エラーが発生しました
どうしたらいいのでしょうか?
時間の処理にはSwingのTimerを使用しています
以下はエラー文です
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at timer.actionPerformed(Timer.java:119) at javax.swing.Timer.fireActionPerformed(Unknown Source) at javax.swing.Timer$DoPostEvent.run(Unknown Source) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$500(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)
以下はコードです
java
1import javax.swing.*; 2import java.awt.*; 3import java.awt.event.*; 4 5class timer extends JFrame implements ActionListener{ 6 7 JPanel panel; 8 9 JLabel t; 10 11 JButton start; 12 JButton stop; 13 JButton clear; 14 15 public static final String Cmd_start = "start"; 16 public static final String Cmd_stop = "stop"; 17 public static final String Cmd_clear = "clear"; 18 19 Timer ti; 20 21 int T1 = 0; 22 int T2 = 0; 23 int T3 = 0; 24 int T4 = 0; 25 26 public static void main(String args[]){ 27 28 timer Frame = new timer(); 29 30 Frame.setSize(300, 100);//ウィンドウサイズ設定 31 Frame.setTitle("タイマー"); 32 Frame.setLocationRelativeTo(null);//ウィンドウの位置を中央に設定 33 Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//ウィンドウを×で閉じるようにする設定 34 Frame.setVisible(true);//ウィンドウを可視化 35 36 } 37 38 timer(){ 39 40 ti = new Timer(1000, this); 41 42 start = new JButton("スタート"); 43 stop = new JButton("ストップ"); 44 clear = new JButton("リセット"); 45 46 start.setForeground(Color.BLACK); 47 start.setBackground(Color.WHITE); 48 stop.setForeground(Color.BLACK); 49 stop.setBackground(Color.WHITE); 50 clear.setForeground(Color.BLACK); 51 clear.setBackground(Color.WHITE); 52 53 start.setVerticalAlignment(JButton.CENTER); 54 start.setHorizontalAlignment(JButton.CENTER); 55 stop.setVerticalAlignment(JButton.CENTER); 56 stop.setHorizontalAlignment(JButton.CENTER); 57 clear.setVerticalAlignment(JButton.CENTER); 58 clear.setHorizontalAlignment(JButton.CENTER); 59 60 start.setBounds(0, 0, 50, 30); 61 stop.setBounds(60, 0, 50, 30); 62 clear.setBounds(110, 0, 50, 30); 63 64 start.setActionCommand(Cmd_start); 65 stop.setActionCommand(Cmd_stop); 66 clear.setActionCommand(Cmd_clear); 67 68 start.addActionListener(this); 69 stop.addActionListener(this); 70 clear.addActionListener(this); 71 72 panel = new JPanel(); 73 panel.setLayout(null); 74 75 t = new JLabel(); 76 t.setText(T1 + "日" + T2 + "時" + T3 + "分" + T4 + "秒"); 77 t.setBounds(0, 0, 100, 100); 78 79 panel.add(t); 80 81 panel.add(start); 82 panel.add(stop); 83 panel.add(clear); 84 85 getContentPane().add(panel, BorderLayout.CENTER); 86 87 } 88 89 public void actionPerformed(ActionEvent e){ 90 91 String cmd = e.getActionCommand(); 92 93 if(cmd.equals(Cmd_start)){ 94 95 ti.start(); 96 97 }else if(cmd.equals(Cmd_stop)){ 98 99 ti.stop(); 100 101 }else if(cmd.equals(Cmd_clear)){ 102 103 T1 = 0; 104 T2 = 0; 105 T3 = 0; 106 T4 = 0; 107 108 } 109 110 T4 += 1; 111 112 if(T4>= 60){ 113 114 T3 += 1; 115 T4 = 0; 116 117 } 118 119 if(T3 >= 60){ 120 121 T2+= 1; 122 T3 = 0; 123 124 } 125 126 if(T2 >= 24){ 127 128 T1+= 1; 129 T2 = 0; 130 131 } 132 133 t.setText(T1 + "日" + T2 + "時" + T3 + "分" + T4 + "秒"); 134 repaint(); 135 136 } 137 138}
私に回答依頼が来てますが間違いだと思います。前にも同じことがありましたが、似た名前の方がいるんでしょうか?

回答3件
あなたの回答
tips
プレビュー