[解決済み] 私のプログラム(javafx)にタイマーを追加する [重複] [重複
質問内容
私は自分のプログラムにタイマーを追加しようとしています。java.util.Timerを呼び出してみましたが、その背後にある概念を完全に理解していないため、イライラします。私はpythonでコーディングを1学期やったばかりですが、これは私にとって全く異なるレベルです。
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import java.awt.event.ActionListener;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class main extends Application implements EventHandler<ActionEvent>{
Button button;
Button button2;
Counter counter = new Counter(0);
Counter timecounter = new Counter(0);
Text text_counter = new Text(counter.S_count.get());
Text text_timecounter = new Text(timecounter.S_count.get());
Date currdate = new Date();
int currsec = currdate.getSeconds();
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Counter Window");
button = new Button();
button2 = new Button();
button.setText("Reset");
button.setOnAction(this);
button2.setText("Tick");
button2.setOnAction(this);
button.setTranslateY(-120);
button2.setTranslateY(-80);
text_counter.textProperty().bind(counter.S_count);
text_timecounter.textProperty().bind(timecounter.S_count);
text_timecounter.setTranslateX(-100);
StackPane layout = new StackPane();
layout.getChildren().add(button);
layout.getChildren().add(button2);
layout.getChildren().add(text_counter);
layout.getChildren().add(text_timecounter);
Scene scene = new Scene(layout, 360,280);
primaryStage.setScene(scene);
primaryStage.show();
}
@Override
public void handle(ActionEvent event) {
if(event.getSource()==button){
counter.Reset();
}
if(event.getSource()==button2){
counter.Tick();
}
}
}
Pythonでメインループを持つプログラムを作りました。ループの中に、現在の日付の秒数が変わったかどうかをチェックし、変わった場合は値を1つインクリメントするチェックを追加することで、"dirty"を行う方法を考えていました。
class timerclass {
Timer timer1;
private int timecounter = 0;
TimerTask Task1 = new TimerTask() {
@Override
public void run() {
setTimecounter(getTimecounter()+1);
}
};
public timerclass(){
timer1 = new Timer();
}
public int getTimecounter() {
return timecounter;
}
public void setTimecounter(int timecounter) {
this.timecounter = timecounter;
}
}
ここまでが、新しいタイマーを作るまでの流れです。タスクを作成して、それをタイマーにスケジュールしなければならないことは理解できましたが、その方法が全く分かりません...。
どうすればいいのでしょうか?ご不明な点があり申し訳ありません。
どのように解決するのですか?
Timer
は、次のように使用します。
タスクのスケジュール
.. では、そのタスクはどこに書けばいいのでしょうか?そうですね、タスクは
TimerTask
クラスがあります...
混乱してる?分解してみましょう。
Timer timer = new Timer();
これで、Timerクラスのオブジェクトが作成されました。
さて、これから何か作業をしなければなりませんね?そのためには、次のようなオブジェクトを作成します。
TimerTask
.
TimerTask task = new TimerTask()
{
public void run()
{
//The task you want to do
}
};
これでタスクが作成され、runメソッドの中で実行したいタスクが定義されました。
なぜTimerTaskクラスそのものを書いたのでしょうか? それは、TimerTaskが3つのメソッドを持つ抽象クラスだからです。 そのため、どのメソッドを使用したいかを定義する必要があります...
タスクのスケジューリング
timer.schedule(task,5000l);
5000の後の'l'に注意してください。これは長いデータ型を表すものです。
schedule
メソッドは次のように定義されています。
void schedule(TimerTask task,long milliseconds)
参考までに
https://docs.oracle.com/javase/7/docs/api/java/util/Timer.html
https://docs.oracle.com/javase/7/docs/api/java/util/TimerTask.html
関連
-
[解決済み] パラメータ[変数]の不正な修飾子;finalのみが許可される[closed]。
-
[解決済み] 環境変数JAVA_OPTSの使い方を教えてください。
-
[解決済み] 一部の入力ファイルが非推奨のAPIを使用またはオーバーライドしている
-
[解決済み] JOGLまたはLWJGLの既成のプロジェクト
-
[解決済み] Java の条件付きコンパイル:コードチャンクをコンパイルしないようにするには?
-
[解決済み] ORA-01654: インデックスを拡張できません。
-
[解決済み] javaでメソッドを呼び出すプログラムのエラー修正
-
[解決済み] java swingアプリケーションでJCEがプロバイダBCを認証できない
-
[解決済み] java.io.IOException。DER長の短い読み取り
-
[解決済み] Python プログラムを 50 ミリ秒間スリープさせるにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] HashMapのtoString関数はなぜ異なる順序で自分自身を印刷するのですか?
-
[解決済み] Java - JTextFieldが空かどうかを確認する
-
[解決済み] javaで部分クラスを実装する方法
-
[解決済み] Java Genericメソッドをstaticにするには?
-
[解決済み] java.util.concurrent.ExecutionException 例外をどのように処理しますか?
-
[解決済み] Eclipse- Dynamic Web Module 3.0 で新しいプロジェクトを作成するときに Java 1.6 以降が必要なエラーが発生する。
-
[解決済み] ORA-01654: インデックスを拡張できません。
-
[解決済み] アクティビティに割り当てられない
-
[解決済み] javaでメソッドを呼び出すプログラムのエラー修正
-
[解決済み] Java: getInstanceとStaticの比較