import javafx.application.Application;
import javafx.beans.value.ObservableValue;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.RadioButton;
import javafx.scene.control.Toggle;
import javafx.scene.control.ToggleGroup;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;
public class Main extends Application {
public void start(Stage stage) {
// هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في النافذة
RadioButton rb1 = new RadioButton("Cat");
RadioButton rb2 = new RadioButton("Dog");
RadioButton rb3 = new RadioButton("Bird");
ImageView imageView = new ImageView();
// هنا قمنا بتحديد مكان ظهور جميع الأشياء التي نريد إضافتها في النافذة
imageView.setTranslateX(130);
imageView.setTranslateY(30);
// و هكذا أصبح يمكن إختيار واحد منهم في كل مرة rb3 و rb2 و rb1 و ربطنا فيه الكائنات ToggleGroup هنا قمنا بإنشاء كائن من الكلاس
ToggleGroup group = new ToggleGroup();
rb1.setToggleGroup(group);
rb2.setToggleGroup(group);
rb3.setToggleGroup(group);
// يتم النقر عليه RadioButton هنا قمنا بتحديد المعلومة التي سيرسلها كل
// فعلياً جعلنا كل واحد منهم يرسل إسم الصورة التي يجب أن يتم عرضها
rb1.setUserData("/images/cat.png");
rb2.setUserData("/images/dog.png");
rb3.setUserData("/images/bird.png");
// في النافذة Root Node لأننا ننوي جعله الـ Group هنا قمنا بإنشاء كائن من الكلاس
Group root = new Group();
// root هنا قمنا بإضافة جميع الأشياء في الكائن
root.getChildren().add(rb1);
root.getChildren().add(rb2);
root.getChildren().add(rb3);
root.getChildren().add(imageView);
// فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن
Scene scene = new Scene(root, 300, 200);
// هنا وضعنا عنوان للنافذة
stage.setTitle("JavaFX RadioButton");
// أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ
// هنا قمنا بإظهار النافذة
// group تابع للمجموعة RadioButton هنا قمنا بتحديد ماذا سيحدث عند النقر على أي
group.selectedToggleProperty().addListener((ObservableValue<? extends Toggle> ov, Toggle toggle, Toggle new_toggle) -> {
// RadioButton مختار سيتم عرض صورة بناءاً على الرابط الذي تم إرساله من قبل الـ RadioButton هنا قلنا أنه إذا كان يوجد أي
if(group.getSelectedToggle() != null)
imageView.setImage(new Image(getClass().getResourceAsStream(group.getSelectedToggle().getUserData().toString())));
// مختاراً بشكل إفتراضي حتى يتم إظهار صورة القطة عند تشغيل التطبيق rb1 هنا جعلنا الـ
// هنا قمنا بتشغيل التطبيق
public static void main(String[] args) {
import javafx.application.Application;
import javafx.beans.value.ObservableValue;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.RadioButton;
import javafx.scene.control.Toggle;
import javafx.scene.control.ToggleGroup;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage stage) {
// هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في النافذة
RadioButton rb1 = new RadioButton("Cat");
RadioButton rb2 = new RadioButton("Dog");
RadioButton rb3 = new RadioButton("Bird");
ImageView imageView = new ImageView();
// هنا قمنا بتحديد مكان ظهور جميع الأشياء التي نريد إضافتها في النافذة
rb1.setTranslateX(40);
rb1.setTranslateY(50);
rb2.setTranslateX(40);
rb2.setTranslateY(90);
rb3.setTranslateX(40);
rb3.setTranslateY(130);
imageView.setTranslateX(130);
imageView.setTranslateY(30);
// و هكذا أصبح يمكن إختيار واحد منهم في كل مرة rb3 و rb2 و rb1 و ربطنا فيه الكائنات ToggleGroup هنا قمنا بإنشاء كائن من الكلاس
ToggleGroup group = new ToggleGroup();
rb1.setToggleGroup(group);
rb2.setToggleGroup(group);
rb3.setToggleGroup(group);
// يتم النقر عليه RadioButton هنا قمنا بتحديد المعلومة التي سيرسلها كل
// فعلياً جعلنا كل واحد منهم يرسل إسم الصورة التي يجب أن يتم عرضها
rb1.setUserData("/images/cat.png");
rb2.setUserData("/images/dog.png");
rb3.setUserData("/images/bird.png");
// في النافذة Root Node لأننا ننوي جعله الـ Group هنا قمنا بإنشاء كائن من الكلاس
Group root = new Group();
// root هنا قمنا بإضافة جميع الأشياء في الكائن
root.getChildren().add(rb1);
root.getChildren().add(rb2);
root.getChildren().add(rb3);
root.getChildren().add(imageView);
// فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن
Scene scene = new Scene(root, 300, 200);
// هنا وضعنا عنوان للنافذة
stage.setTitle("JavaFX RadioButton");
// أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ
stage.setScene(scene);
// هنا قمنا بإظهار النافذة
stage.show();
// group تابع للمجموعة RadioButton هنا قمنا بتحديد ماذا سيحدث عند النقر على أي
group.selectedToggleProperty().addListener((ObservableValue<? extends Toggle> ov, Toggle toggle, Toggle new_toggle) -> {
// RadioButton مختار سيتم عرض صورة بناءاً على الرابط الذي تم إرساله من قبل الـ RadioButton هنا قلنا أنه إذا كان يوجد أي
if(group.getSelectedToggle() != null)
imageView.setImage(new Image(getClass().getResourceAsStream(group.getSelectedToggle().getUserData().toString())));
});
// مختاراً بشكل إفتراضي حتى يتم إظهار صورة القطة عند تشغيل التطبيق rb1 هنا جعلنا الـ
rb1.setSelected(true);
}
// هنا قمنا بتشغيل التطبيق
public static void main(String[] args) {
launch(args);
}
}