<AI>
JavaFXでのforループ処理は、通常のJava言語と同様に記述します。
画面(UI)の初期化や複数コンポーネントの配置、リストデータの処理で活用できます。
重い処理を行う場合は画面フリーズを防ぐため、別スレッド(Task)でforループを回す必要があります。
基本的なforループ処理(UIの動的生成)複数のノード(ボタンや図形など)を生成し、レイアウトペインに追加します。
java
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class LoopExample extends Application {
@Override
public void start(Stage primaryStage) {
VBox root = new VBox();
// forループで5つのボタンを作成して追加
for (int i = 1; i <= 5; i++) {
Button button = new Button("ボタン " + i);
root.getChildren().add(button);
}
Scene scene = new Scene(root, 300, 250);
primaryStage.setScene(scene);
primaryStage.show();
}
}
コードは注意してご使用ください。
拡張for文(リスト処理)
データモデルやリストから要素を取り出してUIコンポーネントに反映させる場合によく使用されます。
java
import java.util.Arrays;
import java.util.List;
import javafx.scene.control.Label;
// ... (他のインポートは省略)
List names = Arrays.asList("Alice", "Bob", "Charlie");
for (String name : names) {
Label label = new Label("こんにちは、" + name + "さん");
root.getChildren().add(label);
}
コードは注意してご使用ください。
注意点:時間のかかるループ処理は「非同期」にする
forループ内でファイル読み込みや重たい計算を行うと、画面がフリーズします。
その場合は Task を使用し、バックグラウンドでループ処理を実行してください。
java
import javafx.concurrent.Task;
Task task = new Task() {
@Override
protected Void call() throws Exception {
for (int i = 0; i < 100; i++) {
// 時間のかかる処理
Thread.sleep(100);
// 進捗の更新(必要に応じて)
updateProgress(i, 100);
}
return null;
}
};
// スレッドの開始
Thread thread = new Thread(task);
thread.setDaemon(true);
thread.start();
コードは注意してご使用ください。