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

JavaFXطريقة إضافة عناصر (MenuItem) في كل قائمة (Menu) و تنفيذ أوامر عند النقر على العناصر

المثال التالي يعلمك طريقة إضافة عناصر ( Menu Items ) في كل قائمة و إضافة خط فاصل ( Separator ) بين العناصر.
ستتعلم أيضاً كيف تنفذ أوامر عند النقر على العناصر الموجودة في القوائم.


مثال

Main.java
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.control.SeparatorMenuItem;
import javafx.stage.Stage;

public class Main extends Application {

    // يمثل شريط القوائم الذي سنضعه في أعلا النافذة MenuBar هنا قمنا بإنشاء كائن من الكلاس
    MenuBar menuBar = new MenuBar();

    // تمثل القوائم الثلاث الرئيسية التي سنضعها في شريط القوائم Menu هنا قمنا بإنشاء 3 كائنات من الكلاس
    Menu menuFile = new Menu("File");
    Menu menuEdit = new Menu("Edit");
    Menu menuView = new Menu("View");

    // تمثل العناصر التي سنضعها في القوائم MenuItem هنا قمنا بإنشاء 11 كائن من الكلاس
    MenuItem itemNewFile = new MenuItem("New");
    MenuItem itemOpen = new MenuItem("Open");
    MenuItem itemSave = new MenuItem("Save");
    MenuItem itemExit = new MenuItem("Exit");
    MenuItem itemUndo = new MenuItem("Undo");
    MenuItem itemCut = new MenuItem("Cut");
    MenuItem itemCopy = new MenuItem("Copy");
    MenuItem itemPaste = new MenuItem("Paste");
    MenuItem itemSelect = new MenuItem("Select All");
    MenuItem itemAbout = new MenuItem("About");
    MenuItem itemReport = new MenuItem("Report Issue");
    
    @Override
    public void start(Stage stage) {

        // هنا قمنا بوضع القوائم في شريط القوائم
        menuBar.getMenus().addAll(menuFile, menuEdit, menuView);

        // menuFile في القائمة itemExit و itemSave ,ItemOpen ,itemNewFile هنا قمنا بوضع العناصر
        menuFile.getItems().add(itemNewFile);
        menuFile.getItems().add(itemOpen);
        menuFile.getItems().add(itemSave);
        menuFile.getItems().add(new SeparatorMenuItem());   // هنا أضفنا خط فاصل
        menuFile.getItems().add(itemExit);

        // menuEdit في القائمة itemSelect و itemPaste ,itemCopy ,itemCut ,itemUndo هنا قمنا بوضع العناصر
        menuEdit.getItems().add(itemUndo);
        menuEdit.getItems().add(new SeparatorMenuItem());   // هنا أضفنا خط فاصل
        menuEdit.getItems().add(itemCut);
        menuEdit.getItems().add(itemCopy);
        menuEdit.getItems().add(itemPaste);
        menuEdit.getItems().add(new SeparatorMenuItem());   // هنا أضفنا خط فاصل
        menuEdit.getItems().add(itemSelect);
        
        // menuView في القائمة itemReport و itemAbout هنا قمنا بوضع العناصر
        menuView.getItems().add(itemAbout);
        menuView.getItems().add(itemReport);
        
        // هنا قمنا بجعل عرض شريط القوائم يساوي عرض النافذة حتى يظهر مطابق لها
        menuBar.setPrefWidth(400);

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

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

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

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

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

        // هنا قمنا بإظهار النافذة
        stage.show();
        
        // itemNewFile هنا نضع الأوامر التي نريد أن يتم تنفيذها عند النقر على العنصر
        itemNewFile.setOnAction((ActionEvent e) -> {

        });
        
        // itemOpen هنا نضع الأوامر التي نريد أن يتم تنفيذها عند النقر على العنصر
        itemOpen.setOnAction((ActionEvent e) -> {

        });
        
        // itemSave هنا نضع الأوامر التي نريد أن يتم تنفيذها عند النقر على العنصر
        itemSave.setOnAction((ActionEvent e) -> {

        });
        
        // itemExit هنا نضع الأوامر التي نريد أن يتم تنفيذها عند النقر على العنصر
        itemExit.setOnAction((ActionEvent e) -> {

        });
        
        // itemUndo هنا نضع الأوامر التي نريد أن يتم تنفيذها عند النقر على العنصر
        itemUndo.setOnAction((ActionEvent e) -> {

        });
        
        // itemCut هنا نضع الأوامر التي نريد أن يتم تنفيذها عند النقر على العنصر
        itemCut.setOnAction((ActionEvent e) -> {

        });
        
        // itemCopy هنا نضع الأوامر التي نريد أن يتم تنفيذها عند النقر على العنصر
        itemCopy.setOnAction((ActionEvent e) -> {

        });
        
        // itemPaste هنا نضع الأوامر التي نريد أن يتم تنفيذها عند النقر على العنصر
        itemPaste.setOnAction((ActionEvent e) -> {

        });
        
        // itemSelect هنا نضع الأوامر التي نريد أن يتم تنفيذها عند النقر على العنصر
        itemSelect.setOnAction((ActionEvent e) -> {

        });
        
        // itemAbout هنا نضع الأوامر التي نريد أن يتم تنفيذها عند النقر على العنصر
        itemAbout.setOnAction((ActionEvent e) -> {

        });
        
        // itemReport هنا نضع الأوامر التي نريد أن يتم تنفيذها عند النقر على العنصر
        itemReport.setOnAction((ActionEvent e) -> {

        });

    }

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

}

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

كل قائمة تحتوي على مجموعة عناصر مختلفة تظهرهم عند النقر عليها.

طريقة إضافة عناصر JMenuItem في كل قائمة JMenu و تنفيذ أوامر عند النقر على العناصر في javafx