Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals 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);
}
}
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