Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

JavaFXطريقة وضع أيقونات لعناصر الـTreeView

المثال التالي يعلمك طريقة وضع أيقونة للـ TreeView بالإضافة لجعله مفتوحاً بشكل إفتراضي عند تشغيل التطبيق.

ملاحظة: عليك إنشاء مجلد و وضع الصور فيه كما في الصورة التالية.

الصورة توضح أننا أضفنا مجلد إسمه images و وضعنا فيه أربع صور.

⇓ تحميل مجلد الصور


مثال

Main.java
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;

public class Main extends Application {

    // و التي سنقصد بها الشركة Root Item الذي يمثل الـ TreeItem هنا قمنا بتعريف دالة ترجع الأيقونة التي سنضعها لكائن الـ
    public ImageView getRootIcon() {
        return new ImageView(new Image(getClass().getResourceAsStream("images/building-icon.png")));
    }

    // يمثل قسم في الشركة TreeItem هنا قمنا بتعريف دالة ترجع الأيقونة التي سنضعها لكل كائن
    public ImageView getDepartmentIcon() {
        return new ImageView(new Image(getClass().getResourceAsStream("images/department-icon.png")));
    }
    
    // يمثل موظف في الشركة TreeItem هنا قمنا بتعريف دالة ترجع الأيقونة التي سنضعها لكل كائن
    public ImageView getUserMaleIcon() {
        return new ImageView(new Image(getClass().getResourceAsStream("images/user-male-icon.png")));
    }
    
    // يمثل موظفة في الشركة TreeItem هنا قمنا بتعريف دالة ترجع الأيقونة التي سنضعها لكل كائن
    public ImageView getUserFemaleIcon() {
        return new ImageView(new Image(getClass().getResourceAsStream("images/user-female-icon.png")));
    }

    @Override
    public void start(Stage stage) {

        // getRootIcon() و مررنا له أيقونة المبنى التي سترجعها الدالة TreeView في الـ Root Item و الذي سنضعه كـ TreeItem هنا قمنا بإنشاء كائن من الكلاس
        TreeItem<String> rootItem = new TreeItem<>("Harmash", getRootIcon());
        
        // getDepartmentIcon() كل كائن منهم سنجعله يمثل إسم قسم في الشركة و بجانبه أيقونة القسم التي ترجعها الدالة .TreeView هنا قمنا بإنشاء 3 كائنات
        TreeItem dep_1 = new TreeItem("Research & Development", getDepartmentIcon());
        TreeItem dep_2 = new TreeItem("Accounting & Finance", getDepartmentIcon());
        TreeItem dep_3 = new TreeItem("Marketing", getDepartmentIcon());
        
        // كل كائن منهم سنجعله يمثل إسم موظف/موظفة في الشركة و TreeView هنا قمنا بإنشاء 6 كائنات
        // getUserFemaleIcon() و الدالة getUserMaleIcon() بجانبه أيقونة تمثل جنسه و التي ترجعها
        TreeItem user_1 = new TreeItem("Mhamad Harmush", getUserMaleIcon());
        TreeItem user_2 = new TreeItem("Youssef Jabber", getUserMaleIcon());
        TreeItem user_3 = new TreeItem("Hala Hassan", getUserFemaleIcon());
        TreeItem user_4 = new TreeItem("Rola Masri", getUserFemaleIcon());
        TreeItem user_5 = new TreeItem("Rim Ibrahim", getUserFemaleIcon());
        TreeItem user_6 = new TreeItem("Nader Bakir", getUserMaleIcon());
        
        // يظهر عند تشغيل البرنامج ( dep_3 و dep_2 و dep_1 أي الكائنات) rootItem موضوع مباشرةً تحت الـ TreeItem هنا جعلنا كل كائن
        rootItem.setExpanded(true);

        // كأول عنصر فيها rootItem يمثل القائمة الشجرية التي نريد إضافتها في النافذة و وضعنا فيها الكائن TreeView هنا قمنا بإنشاء كائن من الكلاس
        TreeView<String> treeView = new TreeView<>(rootItem);

        // الذي يمثل الشركة rootItem التي تمثل أقسام في الشركة تحت الكائن TreeItem هنا قمنا بإضافة كائنات الـ
        rootItem.getChildren().add(dep_1);
        rootItem.getChildren().add(dep_2);
        rootItem.getChildren().add(dep_3);
        
        // التي تمثل أقسام في الشركة TreeItem التي تمثل موظفين و موظفات تحت كائنات الـ TreeItem هنا قمنا بإضافة كائنات الـ
        dep_1.getChildren().add(user_1);
        dep_1.getChildren().add(user_2);
        dep_1.getChildren().add(user_3);
        dep_2.getChildren().add(user_4);
        dep_2.getChildren().add(user_5);
        dep_3.getChildren().add(user_6);
        
        // في النافذة treeView هنا قمنا بتحديد حجم الـ
        treeView.setPrefSize(400, 250);

        // في النافذة treeView هنا قمنا بتحديد مكان ظهور الكائن
        treeView.setTranslateX(0);
        treeView.setTranslateY(0);

        // في النافذة Root Node لأننا ننوي جعله الـ Group هنا قمنا بإنشاء كائن من الكلاس
        Group root = new Group();

        // root في الكائن treeView هنا قمنا بإضافة الكائن
        root.getChildren().add(treeView);

        // فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن
        Scene scene = new Scene(root, 400, 250);

        // هنا وضعنا عنوان للنافذة
        stage.setTitle("JavaFX TreeView");

        // أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ
        stage.setScene(scene);

        // هنا قمنا بإظهار النافذة
        stage.show();

    }

    // هنا قمنا بتشغيل التطبيق
    public static void main(String[] args) {
        launch(args);
    }

}

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

طريقة وضع أيقونات لعناصر الـ TreeView في javafx