JavaFX طريقة وضع أكثر من Tooltip في النافذة

المثال التالي يعلمك طريقة وضع أكثر من Tooltip بأقل كود ممكن.


مثال

Main.java
import javafx.application.Application;
import javafx.beans.value.ObservableValue;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Tooltip;
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");
    CheckBox cb2 = new CheckBox("Web design using HTML, CSS and JS");
    CheckBox cb3 = new CheckBox("Web Development using PHP and MYSQLI");
    Label resultLabel = new Label("Total Price: 0.0$");
 
    // قام المستخدم باختيارها ( 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) {
        
		// سنضيفه في النافذة CheckBox خاص لكل Tooltip هنا قمنا بإنشاء
        cb1.setTooltip(new Tooltip("100 $"));
        cb2.setTooltip(new Tooltip("150 $"));
        cb3.setTooltip(new Tooltip("200 $"));
        
        // هنا قمنا بتحديد مكان ظهور جميع الأشياء التي نريد إضافتها في النافذة
        label.setTranslateX(40);
        label.setTranslateY(30);
        cb1.setTranslateX(40);
        cb1.setTranslateY(75);
        cb2.setTranslateX(40);
        cb2.setTranslateY(110);
        cb3.setTranslateX(40);
        cb3.setTranslateY(145);
        resultLabel.setTranslateX(40);
        resultLabel.setTranslateY(190);
 
        // هنا قمن بتحسين تصميم الأشياء التي سنضيفها في النافذة
        label.setFont(new Font("Arial", 16));
        resultLabel.setFont(new Font("Arial", 16));
        resultLabel.setTextFill(Color.GREEN);
 
        // في النافذة 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);
 
        // فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن
        Scene scene = new Scene(root, 400, 250);
 
        // هنا وضعنا عنوان للنافذة
        stage.setTitle("JavaFX Tooltip");
 
        // أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .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();
        });
 
    }
 
 
    // هنا قمنا بتشغيل التطبيق
    public static void main(String[] args) {
        launch(args);
    }
 
}

		

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

طريقة وضع أكثر من Tooltip في javafx

الدورات

أدوات مساعدة

أقسام الموقع

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