イメージLayoutXとLayoutYの位置を1秒に変更しようとしています。しかし、私はこれに適した任意の(タイマー)メソッドを見つけることができません。私は単にJavaまたはJavaFXを使用して "タイマーサイクル"を作成できるJavaScript "setInterval"に似たものを探しています。イメージを1秒おきに新しいXとYのポストを与えます
アドバイスは広く公開されています。
イメージLayoutXとLayoutYの位置を1秒に変更しようとしています。しかし、私はこれに適した任意の(タイマー)メソッドを見つけることができません。私は単にJavaまたはJavaFXを使用して "タイマーサイクル"を作成できるJavaScript "setInterval"に似たものを探しています。イメージを1秒おきに新しいXとYのポストを与えます
アドバイスは広く公開されています。
java.util.Timer
では、このようなタスクをスケジュールできます。
メソッドtimer.schedule()
は、タスクのみを実行します。タスクを繰り返すには メソッドtimer.scheduleAtFixedRate()
を使用します。
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println("hello");
}
}, 1000, 1000);
scheduleAtFixedRate()
の第2のパラメータは、ミリ秒単位の最初の実行と最後のパラメータの前に遅延をミリ秒単位で実行されるタスク間の間隔です。
には、INDEFINITE
サイクルカウントを使用できます。
例:
Timeline tl = new Timeline(new KeyFrame(Duration.seconds(1), evt -> {
// toggle image postion
imageView.setLayoutX(200 - imageView.getLayoutX());
imageView.setLayoutY(200 - imageView.getLayoutY());
}));
tl.setCycleCount(Animation.INDEFINITE);
tl.play();
これは、イベントハンドラを保証をは、JavaFXアプリケーションのスレッドで実行されます。
のjavax.swing.Timerデモ:https://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html:
public static void main(String[] args) {
JFrame jf = new JFrame();
jf.setPreferredSize(new Dimension(200,100));
int sec = 5 ;
JLabel lbl = new JLabel(" auto closing in "+sec + " seconds.");
jf.getContentPane().add(lbl);
jf.pack();
jf.setVisible(true);
runTimer(sec , jf);
}
/**
* Timer to auto close frame.
*
* @param duration in seconds
* @param jf
*/
protected static void runTimer(int duration, final JFrame jf) {
//add action listner to be acrivated by timer
ActionListener taskPerformer = new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
jf.dispose();
}
};
if (duration >60)
{
duration = 60; //set max timer
}
new javax.swing.Timer(duration * 1000, taskPerformer).start();
}
あなたは次のように意味ですか? – c0der