JavaFX طريقة تنفيذ أوامر عند النقر على CheckBox

المثال التالي يعلمك طريقة تنفيذ أوامر عند النقر على CheckBox.


مثال

Main.java
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);
    }
 
}
		

ستظهر لك النافذة التالية عند التشغيل.

طريقة تنفيذ أوامر عند النقر على الـ CheckBox في javafx

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة