JavaFXは、JavaでGUI(グラフィカル・ユーザー・インターフェース)アプリケーションを作成するための強力なライブラリです。これにより、視覚的に魅力的なデスクトップアプリケーションを開発することができます。JavaFXは、特にクロスプラットフォームなアプリケーションを作成するのに適しており、ボタンやラベル、テキストフィールドなど、さまざまな基本的なユーザーインターフェース(UI)コンポーネントを提供します。本記事では、JavaFXで使用される基本的なUIコンポーネントに焦点を当て、これらをどのように活用するかについて詳述します。
1. ボタン(Button)
ボタンは、ユーザーがアクションを実行するための基本的なUIコンポーネントです。JavaFXでボタンを作成するには、Buttonクラスを使用します。以下は、シンプルなボタンを作成し、クリックした際にアクションを実行するコードの例です。
javaimport javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class SimpleButtonExample extends Application {
@Override
public void start(Stage primaryStage) {
Button btn = new Button("Click Me");
btn.setOnAction(e -> System.out.println("Button Clicked!"));
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("JavaFX Button Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
このコードでは、Buttonオブジェクトを作成し、その上でsetOnActionメソッドを使用してクリックイベントを設定しています。ボタンがクリックされると、コンソールに「Button Clicked!」と表示されます。
2. ラベル(Label)
ラベルは、静的なテキストを表示するために使用されるコンポーネントです。Labelクラスを使って簡単に作成できます。ラベルは、ユーザーに情報を提供するための便利な方法です。
javaimport javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class LabelExample extends Application {
@Override
public void start(Stage primaryStage) {
Label label = new Label("Hello, JavaFX!");
StackPane root = new StackPane();
root.getChildren().add(label);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("JavaFX Label Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
このコードでは、Labelクラスを使って「Hello, JavaFX!」というテキストを表示します。ラベルは、ユーザーに視覚的に情報を提供するために重要な役割を果たします。
3. テキストフィールド(TextField)
TextFieldは、ユーザーから文字列を入力させるためのUIコンポーネントです。ユーザーが情報を入力し、後でプログラムで処理できるようにするために使用します。以下は、テキストフィールドを作成し、ユーザーが入力したテキストを取得する例です。
javaimport javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class TextFieldExample extends Application {
@Override
public void start(Stage primaryStage) {
TextField textField = new TextField();
Button btn = new Button("Submit");
btn.setOnAction(e -> System.out.println("Text entered: " + textField.getText()));
StackPane root = new StackPane();
root.getChildren().addAll(textField, btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("JavaFX TextField Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
このコードでは、TextFieldとButtonを使い、ボタンをクリックするとテキストフィールドに入力されたテキストをコンソールに表示します。
4. チェックボックス(CheckBox)
CheckBoxは、ユーザーに対して「はい」または「いいえ」の選択肢を提供するために使用されます。ユーザーが複数の選択肢を選ぶことができるため、設定やオプション画面でよく使用されます。以下は、チェックボックスを使って選択状態を取得する例です。
javaimport javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.CheckBox;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class CheckBoxExample extends Application {
@Override
public void start(Stage primaryStage) {
CheckBox checkBox = new CheckBox("Accept Terms");
checkBox.setOnAction(e -> {
if (checkBox.isSelected()) {
System.out.println("Terms Accepted");
} else {
System.out.println("Terms Not Accepted");
}
});
StackPane root = new StackPane();
root.getChildren().add(checkBox);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("JavaFX CheckBox Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
このコードでは、CheckBoxが選択されているかどうかを判定し、選択されている場合は「Terms Accepted」と表示されます。
5. ラジオボタン(RadioButton)
RadioButtonは、複数の選択肢から1つだけを選ぶためのUIコンポーネントです。ラジオボタンは通常、グループ化して使用します。以下は、ラジオボタンを使って選択肢を提供する例です。
javaimport javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.RadioButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class RadioButtonExample extends Application {
@Override
public void start(Stage primaryStage) {
ToggleGroup group = new ToggleGroup();
RadioButton radio1 = new RadioButton("Option 1");
radio1.setToggleGroup(group);
RadioButton radio2 = new RadioButton("Option 2");
radio2.setToggleGroup(group);
radio1.setOnAction(e -> System.out.println("Option 1 Selected"));
radio2.setOnAction(e -> System.out.println("Option 2 Selected"));
StackPane root = new StackPane();
root.getChildren().addAll(radio1, radio2);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("JavaFX RadioButton Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
このコードでは、ToggleGroupを使用して、2つのラジオボタンをグループ化し、1つの選択肢だけを選べるようにしています。
6. スライダー(Slider)
Sliderは、連続的な値を選択するために使用されます。音量の調整やサイズ変更など、ユーザーが値を範囲内で調整する必要があるときに便利です。
javaimport javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Slider;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class SliderExample extends Application {
@Override
public void start(Stage primaryStage) {
Slider slider = new Slider();
slider.setMin(0);
slider.setMax(100);
slider.setValue(50);
slider.valueProperty().addListener((observable, oldValue, newValue) -> {
System.out.println("Slider Value: " + newValue);
});
StackPane root = new StackPane();
root.getChildren().add(slider);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("JavaFX Slider Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
このコードでは、Sliderを使って値を0から100までの範囲で選択し、その値が変更されるたびに新しい値を表示します。
結論
JavaFXは、JavaでGUIアプリケーションを開発するために非常に強力で柔軟なツールです。上記で紹介した基本的なUIコンポーネントは、ユーザーインターフェースの構築に役立ち、さまざまなアプリケーションに応じたカスタマイズが可能です。JavaFXを活用することで、より直感的で使いやすいアプリケーションを作成することができます。
