Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Timerの初期化などについて

前回はTimerの使用方法について、いろいろと意見を交わしましたが、一度動かしたタイマーを止めたり、初期値の値に戻す方法をご存知の方は、どうかご教授お願いいたします。

10

回答

4055

閲覧

10件の回答

評価

0

検索くらいしましょう。

評価

0

>前回はTimerの使用方法について、いろいろと意見を交わしましたが

傍から見ていても、"意見を交わしている"ようには見えませんでしたが。
"教えを請いましたが"では?

評価

0

>傍から見ていても、"意見を交わしている"ようには見えませんでしたが。
>"教えを請いましたが"では?
これだけでは、あんまりなので。

>一度動かしたタイマーを止めたり、初期値の値に戻す方法

TimerクラスのJavaDocを読みましたか?
私には、JavaDocに記述されているように見えますが。

それに、仮にAPIレベルで用意されていないとしても、
フラグを1つ用意すればよいだけでしょう。

常にAPIで目的の処理が実装されているわけではないので、自分で考えて(検索したり)、実行して、修正してというサイクルを自分自身でできなければ、まともにプログラムなんて書けませんよ。

評価

0

あなたにとって「前回」でも、見た人間全てにわかるようにすることは常識です。
せめて、リンクとしてURLくらい張りましょう。
リンクを張ることがめんどくさいと感じるなら「前回」という文言を使用しないほうがいいです。

2007-01-22 16:38 Timerの使い方。 
http://www.javaroad.jp/bbs/answer.jsp?q_id=20070116145948701

また、mioさん、無名さんも言ってますが、Googleで「Timer java」で検索したり、Javadocを見たりするだけで答えが見つかります。

http://www.google.com/search?num=50&hl=ja&q=Timer+Java&lr=lang_ja

こちらの掲示板のガイドラインにも

Javaの道 掲示板 ガイドラインhttp://www.javaroad.jp/bbs/bbs_rule.htm

利用時のマナー  
・ 質問の前に、マニュアル、ドキュメントを確認しましょう 
・ 質問の前に、過去ログ、検索エンジンで解決策がないか調べましょう 

となっております。がんばろうとする意欲は感じられますが、教えを請おうとする態度としてはあまりよろしくないかと思います。

評価

0

Timer の初期化について、

initTimer()

というメソッドがあることが分かりましたが、どのような記述を行えばよいのか分かりませんので、どなたかご存知の方はご教授お願いいたします。

評価

0

Timerクラスって・・・
javax.swing.Timerのことですよね?

initTimer()
なんてメソッドできたんですか?

1.5までしか知りませんし、使ったことないですけど、
>一度動かしたタイマーを止めたり
stop()、restart()というメソッドがあるみたいですが、これはだめなんですか?

>初期値の値に戻す
新しくインスタンスを生成すればどうでしょう?

勘違いでしたら、ごめんなさい。

評価

0

>initTimer()というメソッドがあることが分かりましたが

initTimer()のようなメソッドがJAVAの標準ライブラリにはありません。
それは、誰かが作ったメソッドではないでしょうか?

評価

0

javax.swing.Timerの話だったと思いますが・・

どこからinitTimer()という物が出てきたのか判りません、JavaDocは読まれましたか?
ここです。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/javax/swing/Timer.html

ここを読むと
javax.swing.Timer#stop()
javax.swing.Timer#restart()
javax.swing.Timer#setDelay()
というのがあります、これで停止や再開及びTimer 遅延時間の設定が出来ます。

誰でも最初はわかりませんが、まずJavaDocは読まないといけません。

評価

0

あなたは、Timerより先に、Javaの基本を学んだほうがよい。


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

//
public class SampleFrame extends JFrame implements ActionListener {

  //
  GridLayout gridLayout = new GridLayout();
  //
  JButton jButtonStart = new JButton();
  JButton jButtonStop = new JButton();
  JButton jButtonRestart = new JButton();
  //
  Timer timer = null;

  //
  public SampleFrame() {
    super();
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(300,100);
    this.setLocationRelativeTo(null);
    this.getContentPane().setLayout(gridLayout);
    gridLayout.setColumns(3);
    jButtonStart.setText("START");
    jButtonStop.setText("STOP");
    jButtonRestart.setText("RESTART");
    this.getContentPane().add(jButtonStart,null);
    this.getContentPane().add(jButtonStop,null);
    this.getContentPane().add(jButtonRestart,null);
    jButtonStart.addActionListener(this);
    jButtonStop.addActionListener(this);
    jButtonRestart.addActionListener(this);
    //タイマーオブジェクトの生成
    timer = new Timer(1000,this);
//    timer.setInitialDelay(1500);
//    timer.setRepeats(true);
  }

  //
  public static void main(String[] args) {
    SampleFrame sampleFrame = new SampleFrame();
    sampleFrame.setVisible(true);
  }

  //
  public void actionPerformed(ActionEvent e) {
    Object source = e.getSource();
    if(source == timer){
      System.out.println("timer");
    }
    else if(source == jButtonStart){
      if(!timer.isRunning()){
        System.out.println("START");
        timer.start();
      }
    }
    else if(source == jButtonStop){
      if(timer.isRunning()){
        timer.stop();
        System.out.println("STOP");
      }
    }
    else if(source == jButtonRestart){
      if(!timer.isRunning()){
        System.out.println("SRETART");
        timer.restart();
      }
    }
  }
}

評価

0

皆さんたくさんのご教授ありがとうございます。
また、

>initTimer()というメソッドがあることが分かりましたが

など間違えている意見を出してしまい、申し訳ございませんでした。
実際に行いたかったことは、Timer のように動かしたい部分の値を、変更するということでした。多くの人に様々な誤解や、時間を割いてまでのご教授本当に申し訳ございませんでした。
結果としては値を抽出する場所を変更するだけで、解決してしまいました。
多くの人たちにタイトルなどの部分から誤解を生むような文章ですみませんでした。
ちなみに今回の皆さんのご意見は大変ありがたく、覚えていきたいと思います。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。