###前提・実現したいこと
JavaでSwingを用いて、windows上で動作するストップウォッチ(スタート、ポーズ、ストップが出来る一番単純なモノ)を作っています。
以下に記載するWEBサイトを参考にして自分なりに作ってみたのですが、うまいこと動作してくれません。
どうかアドバイスをお願いします。
http://java-study.blog.jp/archives/1005563757.html
https://codezine.jp/article/detail/2597
###[追記]発生している障害
TimeTable.javaの11行目(型変換のところ)で、NPEが発生していました。(KSwordOfHasteさん、ありがとうございました!)
該当箇所をif文で処理(下のソースにあります)したところ、NPEはでないでLabelに時間が表示されるようになったのですが、ミリ秒のままで。HH:mm:ssの形に直ってくれません。また、上記のWEBサイトでは初期化について触れていなかったため、出来ればそれも含めてアドバイスのほうをお願いします。
###該当のソースコード(関係無いと思われる処理や記述は省略してあります)
MainPage.java(ストップウォッチを表示するメインページ)
Java
1public class MainPage extends JPanel{ 2static JLabel TimeLabel; 3 MainPage(){ 4 TimeLabel = new TimeLabel(); 5 TimeLabel.setBounds(30,140,200,200); 6 add(TimeLabel); 7 } 8}
MyActionListener.java(アクションリスナー)
Java
1public class MyActionListener implements ActionListener{ 2 static StopWatch stopWatch; 3 if(StartButtonが押された){ 4 stopWatch = new StopWatch(); 5 stopWatch.start(); 6 }else if(PauseButtonが押された){ 7 stopWatch.suspend(); 8 }else if(StopButtonが押された){ 9 stopWatch.stop(); 10 } 11}
TimeLabel.java
Java
1class TimeLabel extends JLabel{ 2 private DateFormat format; 3 public TimeLabel(){ 4 setFont(new Font("Dialog",Font.BOLD,40)); 5 format = new SimpleDateFormat("HH:mm:ss"); 6 Timer t = new Timer(); 7 t.schedule(new TimerLabelTask(), 0,1000);//一秒毎に更新 8 } 9 class TimerLabelTask extends TimerTask { 10 public void run(){ 11 if(MyActionListener.stopWatch != null){ 12 String Time = String.valueOf(MyActionListener.stopWatch.getTime());//long to String 13 setText(Time); 14 }else{ 15 System.out.println("nullnullだ!"); 16 } 17 } 18 } 19}
###補足情報(言語/FW/ツール等のバージョンなど)
Java 8 , Apache Commons lang3を使用しております。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。