JavaFXطريقة تنفيذ أوامر عند النقر على CheckBox
المثال التالي يعلمك طريقة تنفيذ أوامر عند النقر على CheckBox.
مثال
import javafx.application.Application;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.CheckBox;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.CornerRadii;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.stage.Stage;
public class Main extends Application {
// هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في النافذة
Label label = new Label("Available courses");
CheckBox cb1 = new CheckBox("Algorithms and Data Structure ( 100$ )");
CheckBox cb2 = new CheckBox("Web design using HTML, CSS and JS ( 150$ )");
CheckBox cb3 = new CheckBox("Web Development using PHP and MYSQL ( 200$ )");
Label resultLabel = new Label("Total Price: 0.0$");
Button button = new Button("Enroll Now");
// قام المستخدم باختيارها ( CheckBox ) سنستخدم هذا المتغير لتخزين كلفة الإشتراك في كل دورة
double price = 0;
// هنا قمنا بتعريف دالة تحسب سعر كل الدورات التي اختارها المستخدم و تعرض له كلفة الإشتراك فيهم
public void setPrice() {
// قبل إجراء أي عملية حسابية price سيتم تصفير قيمة المتغير
price = 0;
// price سيتم إذافة 100 على قيمة المتغير cb1 إذا قام المستخدم بوضع علامة صح على الكائن
if(cb1.isSelected())
price += 100;
// price سيتم إذافة 150 على قيمة المتغير cb2 إذا قام المستخدم بوضع علامة صح على الكائن
if(cb2.isSelected())
price += 150;
// price سيتم إذافة 200 على قيمة المتغير cb3 إذا قام المستخدم بوضع علامة صح على الكائن
if(cb3.isSelected())
price += 200;
// ككلفة الإشتراك في كل الدورات التي تم إختيارها price في الأخير سيتم وضع قيمة المتغير
resultLabel.setText("Total Price: "+price+"$");
}
@Override
public void start(Stage stage) {
// هنا قمنا بتحديد مكان ظهور جميع الأشياء التي نريد إضافتها في النافذة
label.setTranslateX(40);
label.setTranslateY(25);
cb1.setTranslateX(40);
cb1.setTranslateY(70);
cb2.setTranslateX(40);
cb2.setTranslateY(105);
cb3.setTranslateX(40);
cb3.setTranslateY(140);
resultLabel.setTranslateX(40);
resultLabel.setTranslateY(185);
button.setTranslateX(40);
button.setTranslateY(228);
// هنا قمن بتحسين تصميم الأشياء التي سنضيفها في النافذة
label.setFont(new Font("Arial", 16));
resultLabel.setFont(new Font("Arial", 16));
resultLabel.setTextFill(Color.GREEN);
button.setFont(new Font("Arial", 16));
button.setBackground(new Background(new BackgroundFill(Color.CORNFLOWERBLUE, new CornerRadii(5), Insets.EMPTY)));
button.setTextFill(Color.WHITE);
button.setMinSize(320, 40);
// في النافذة Root Node لأننا ننوي جعله الـ Group هنا قمنا بإنشاء كائن من الكلاس
Group root = new Group();
// root هنا قمنا بإضافة جميع الأشياء في الكائن
root.getChildren().add(label);
root.getChildren().add(cb1);
root.getChildren().add(cb2);
root.getChildren().add(cb3);
root.getChildren().add(resultLabel);
root.getChildren().add(button);
// فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن
Scene scene = new Scene(root, 400, 290);
// هنا وضعنا عنوان للنافذة
stage.setTitle("JavaFX CheckBox");
// أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ
stage.setScene(scene);
// هنا قمنا بإظهار النافذة
stage.show();
// فقط setPrice() سيتم إستدعاء الدالة .cb1 هنا قمنا بتحديد ماذا سيحدث عند النقر على الكائن
cb1.selectedProperty().addListener((ObservableValue<? extends Boolean> ov, Boolean old_val, Boolean new_val) -> {
setPrice();
});
// فقط setPrice() سيتم إستدعاء الدالة .cb2 هنا قمنا بتحديد ماذا سيحدث عند النقر على الكائن
cb2.selectedProperty().addListener((ObservableValue<? extends Boolean> ov, Boolean old_val, Boolean new_val) -> {
setPrice();
});
// فقط setPrice() سيتم إستدعاء الدالة .cb3 هنا قمنا بتحديد ماذا سيحدث عند النقر على الكائن
cb3.selectedProperty().addListener((ObservableValue<? extends Boolean> ov, Boolean old_val, Boolean new_val) -> {
setPrice();
});
// button هنا قمنا بتحديد ماذا سيحدث عند النقر على الكائن
button.setOnAction((ActionEvent e) -> {
// تم إختياره CheckBox لحفظ نص كل s قمنا بتجهيز المتغير
String s = "";
// s سيتم إضافة نصه على النص cb1 إذا كان يوجد علامة صح على الكائن
if(cb1.isSelected())
s += "- "+cb1.getText()+"\n";
// s سيتم إضافة نصه على النص cb2 إذا كان يوجد علامة صح على الكائن
if(cb2.isSelected())
s += "- "+cb2.getText()+"\n";
// s سيتم إضافة نصه على النص cb3 إذا كان يوجد علامة صح على الكائن
if(cb3.isSelected())
s += "- "+cb3.getText()+"\n";
// في الأخير سيتم إظهار نافذة تحتوي على جميع المعلومات الظاهرة في النافذة
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("Enrolled Courses");
alert.setHeaderText(s);
alert.setContentText("Total Price: "+price+"$");
alert.show();
});
}
// هنا قمنا بتشغيل التطبيق
public static void main(String[] args) {
launch(args);
}
}
import javafx.application.Application;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.CheckBox;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.CornerRadii;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.stage.Stage;
public class Main extends Application {
// هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في النافذة
Label label = new Label("Available courses");
CheckBox cb1 = new CheckBox("Algorithms and Data Structure ( 100$ )");
CheckBox cb2 = new CheckBox("Web design using HTML, CSS and JS ( 150$ )");
CheckBox cb3 = new CheckBox("Web Development using PHP and MYSQL ( 200$ )");
Label resultLabel = new Label("Total Price: 0.0$");
Button button = new Button("Enroll Now");
// قام المستخدم باختيارها ( CheckBox ) سنستخدم هذا المتغير لتخزين كلفة الإشتراك في كل دورة
double price = 0;
// هنا قمنا بتعريف دالة تحسب سعر كل الدورات التي اختارها المستخدم و تعرض له كلفة الإشتراك فيهم
public void setPrice() {
// قبل إجراء أي عملية حسابية price سيتم تصفير قيمة المتغير
price = 0;
// price سيتم إذافة 100 على قيمة المتغير cb1 إذا قام المستخدم بوضع علامة صح على الكائن
if(cb1.isSelected())
price += 100;
// price سيتم إذافة 150 على قيمة المتغير cb2 إذا قام المستخدم بوضع علامة صح على الكائن
if(cb2.isSelected())
price += 150;
// price سيتم إذافة 200 على قيمة المتغير cb3 إذا قام المستخدم بوضع علامة صح على الكائن
if(cb3.isSelected())
price += 200;
// ككلفة الإشتراك في كل الدورات التي تم إختيارها price في الأخير سيتم وضع قيمة المتغير
resultLabel.setText("Total Price: "+price+"$");
}
@Override
public void start(Stage stage) {
// هنا قمنا بتحديد مكان ظهور جميع الأشياء التي نريد إضافتها في النافذة
label.setTranslateX(40);
label.setTranslateY(25);
cb1.setTranslateX(40);
cb1.setTranslateY(70);
cb2.setTranslateX(40);
cb2.setTranslateY(105);
cb3.setTranslateX(40);
cb3.setTranslateY(140);
resultLabel.setTranslateX(40);
resultLabel.setTranslateY(185);
button.setTranslateX(40);
button.setTranslateY(228);
// هنا قمن بتحسين تصميم الأشياء التي سنضيفها في النافذة
label.setFont(new Font("Arial", 16));
resultLabel.setFont(new Font("Arial", 16));
resultLabel.setTextFill(Color.GREEN);
button.setFont(new Font("Arial", 16));
button.setBackground(new Background(new BackgroundFill(Color.CORNFLOWERBLUE, new CornerRadii(5), Insets.EMPTY)));
button.setTextFill(Color.WHITE);
button.setMinSize(320, 40);
// في النافذة Root Node لأننا ننوي جعله الـ Group هنا قمنا بإنشاء كائن من الكلاس
Group root = new Group();
// root هنا قمنا بإضافة جميع الأشياء في الكائن
root.getChildren().add(label);
root.getChildren().add(cb1);
root.getChildren().add(cb2);
root.getChildren().add(cb3);
root.getChildren().add(resultLabel);
root.getChildren().add(button);
// فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن
Scene scene = new Scene(root, 400, 290);
// هنا وضعنا عنوان للنافذة
stage.setTitle("JavaFX CheckBox");
// أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ
stage.setScene(scene);
// هنا قمنا بإظهار النافذة
stage.show();
// فقط setPrice() سيتم إستدعاء الدالة .cb1 هنا قمنا بتحديد ماذا سيحدث عند النقر على الكائن
cb1.selectedProperty().addListener((ObservableValue<? extends Boolean> ov, Boolean old_val, Boolean new_val) -> {
setPrice();
});
// فقط setPrice() سيتم إستدعاء الدالة .cb2 هنا قمنا بتحديد ماذا سيحدث عند النقر على الكائن
cb2.selectedProperty().addListener((ObservableValue<? extends Boolean> ov, Boolean old_val, Boolean new_val) -> {
setPrice();
});
// فقط setPrice() سيتم إستدعاء الدالة .cb3 هنا قمنا بتحديد ماذا سيحدث عند النقر على الكائن
cb3.selectedProperty().addListener((ObservableValue<? extends Boolean> ov, Boolean old_val, Boolean new_val) -> {
setPrice();
});
// button هنا قمنا بتحديد ماذا سيحدث عند النقر على الكائن
button.setOnAction((ActionEvent e) -> {
// تم إختياره CheckBox لحفظ نص كل s قمنا بتجهيز المتغير
String s = "";
// s سيتم إضافة نصه على النص cb1 إذا كان يوجد علامة صح على الكائن
if(cb1.isSelected())
s += "- "+cb1.getText()+"\n";
// s سيتم إضافة نصه على النص cb2 إذا كان يوجد علامة صح على الكائن
if(cb2.isSelected())
s += "- "+cb2.getText()+"\n";
// s سيتم إضافة نصه على النص cb3 إذا كان يوجد علامة صح على الكائن
if(cb3.isSelected())
s += "- "+cb3.getText()+"\n";
// في الأخير سيتم إظهار نافذة تحتوي على جميع المعلومات الظاهرة في النافذة
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("Enrolled Courses");
alert.setHeaderText(s);
alert.setContentText("Total Price: "+price+"$");
alert.show();
});
}
// هنا قمنا بتشغيل التطبيق
public static void main(String[] args) {
launch(args);
}
}
ستظهر لك النافذة التالية عند التشغيل.