JavaFXطريقة إضافة عناصر (MenuItem) في كل قائمة (Menu) و تنفيذ أوامر عند النقر على العناصر
المثال التالي يعلمك طريقة إضافة عناصر ( Menu Items ) في كل قائمة و إضافة خط فاصل ( Separator ) بين العناصر.
ستتعلم أيضاً كيف تنفذ أوامر عند النقر على العناصر الموجودة في القوائم.
مثال
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);
}
}
ستظهر لك النافذة التالية عند التشغيل.
كل قائمة تحتوي على مجموعة عناصر مختلفة تظهرهم عند النقر عليها.