تعلم JavaFx ..مقال25_ واجهة المستخدم الرسومية _ الكلاس ContextMenu

اذهب الى الأسفل

تعلم JavaFx ..مقال25_ واجهة المستخدم الرسومية _ الكلاس ContextMenu Empty تعلم JavaFx ..مقال25_ واجهة المستخدم الرسومية _ الكلاس ContextMenu

مُساهمة من طرف زهراء في الجمعة أكتوبر 19, 2018 8:02 pm

اهلا بكم

الكلاس ContextMenu يستخدم للحصول على قائمة منبثقة ( Popup Menu ) تظهر عند النقر على زر الفأرة الأيمن ( Right Click ).

ملاحظة: ليس بالضرورة أن تظهر القائمة فقط عند النقر على زر الفأرة الأيمن, لكنك على الأغلب لن تحتاج إظهارها إلا عند النقر على زر الفأرة الأيمن.


في الـ ContextMenu يمكنك وضع أي نوع من العناصر ( Menu Items ) التالية بداخلها:


  1. Menu: أي قائمة داخلية, حيث يمكنك أن تضع قائمة بداخل قائمة.
  2. MenuItem: عنصر عادي خاص للقوائم.
  3. RadioMenuItem: يمثل RadioButton خاص للقوائم.
  4. CheckMenuItem: يمثل CheckBox خاص للقوائم.
  5. SeparatorMenuItem: يمثل خط فاصل (Separator) خاص للقوائم.
  6. CustomMenuItem: عبارة عن كلاس خاص يجب أن يرث منه أي كلاس تنشئه أنت بهدف وضعه كعنصر في القائمة.



مثال : الصورة التالية عبارة عن ContextMenu تحتوي على إثنين ContextMenu, إثنين RadioMenuItem, إثنين CheckMenuItem و إثنين SeparatorMenuItem.

تعلم JavaFx ..مقال25_ واجهة المستخدم الرسومية _ الكلاس ContextMenu Javafx-context-menu

لعلك تتسائل ما الفرق بين الـ RadioMenuItem و الـ CheckMenuItem لأنهما يعطيانك نفس الشكل!

الفرق بينهما أنك تستطيع وضع الـ RadioMenuItem ضمن مجموعة مثل الـ RadioButton لجعل المستخدم قادر على إختيار عنصر واحد فقط كما

كونستركتورات الكلاس ContextMenu.

الكود:
public ContextMenu()

ينشئ كائن من الكلاس ContextMenu يمثل قائمة فارغة, أي لا تحتوي أي عنصر.لإضافة خيارات فيها نستدعي الدالة getItems() التي تسمح للوصول لعناصرها و من ثم نستدعي الدالة add() أو addAll() لإضافة عناصر فيها كالتالي.
الكود:
contextMenuObject.getItems().add( item );
contextMenuObject.getItems().addAll( item1, item2.. );

الكود:
public ContextMenu(MenuItem... items)

ينشئ كائن من الكلاس ContextMenu يمثل قائمة تحتوي على عناصر.مكان الباراميتر items يمكنك أن تمرر العدد الذي تريده من الكائنات التي ترث من الكلاس MenuItem مع وضع فاصلة بين كل إثنين. هذه العناصر ستظهر كعناصر في القائمة

أهم دوال الكلاس ContextMenu

الكود:
public void show(Node anchor, double screenX, double screenY)

تستخدم لإظهار القائمة التي يمثلها الكائن ContextMenu الذي قام باستدعائها في الموقع الذي تم تحديده.


  • مكان الباراميتر anchor نضع إسم الكائن الذي سنظهر القائمة من أجله, و الذي أعددنا القائمة له من الأساس.
  • مكان الباراميتر screenX نضع رقم بالبيكسل يمثل بعد القائمة أفقياً عن المكان الذي تم النقر عليه.
  • مكان الباراميتر screenY نضع رقم بالبيكسل يمثل بعد القائمة عامودياً عن المكان الذي تم النقر عليه.


كيفية إنشائة

1_إستيراد المكتبة التى تحتوى على عناصر واجهة المستخدام الرسومية وتحدديد الكلاس ContextMenu و الكلاس MenuItem

الكود:
import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem;

2_ إنشاء كائن جديد من الكلاس ContextMenu يمثل القائمة التي نريد إضافتها في النافذة

الكود:
ContextMenu contextMenu = new ContextMenu();

3_إنشاء عناصر القائمة وذلك من خلال انشاء كائن جديد من الكلاس MenuItem

الكود:
 MenuItem menuItem1 = new MenuItem("menu item 1");
        MenuItem menuItem2 = new MenuItem("menu item 2");
        MenuItem menuItem3 = new MenuItem("menu item 3");

4_ إضافة عناصر القائمة الى القائمة contextMenu

الكود:
contextMenu.getItems().add(menuItem1);
        contextMenu.getItems().add(menuItem2);
        contextMenu.getItems().add(menuItem3);

5_أخير وضع القائمة لاحد العناصر الرسومية لظهور القائمة عند النقر بزر الفارة عليه و ليكن مثلا label

الكود:
label1.setContextMenu(contextMenu);

و المثال الكامل على النحو التالى :

الكود:
// Program to create a context menu and add it to label
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.collections.*;
import javafx.stage.Stage;
import javafx.scene.text.Text.*;
import javafx.scene.paint.*;
import javafx.scene.text.*;
public class contextMenu_1 extends Application {
   // labels
   Label l;

   // launch the application
   public void start(Stage stage)
   {
      // set title for the stage
      stage.setTitle("creating contextMenu ");

      // create a label
      Label label1 = new Label("This is a ContextMenu example ");

      // create a menu
      ContextMenu contextMenu = new ContextMenu();

      // create menuitems
      MenuItem menuItem1 = new MenuItem("menu item 1");
      MenuItem menuItem2 = new MenuItem("menu item 2");
      MenuItem menuItem3 = new MenuItem("menu item 3");

      // add menu items to menu
      contextMenu.getItems().add(menuItem1);
      contextMenu.getItems().add(menuItem2);
      contextMenu.getItems().add(menuItem3);

      // create a tilepane
      TilePane tilePane = new TilePane(label1);

      // setContextMenu to label
      label1.setContextMenu(contextMenu);

      // create a scene
      Scene sc = new Scene(tilePane, 200, 200);

      // set the scene
      stage.setScene(sc);

      stage.show();
   }

   public static void main(String args[])
   {
      // launch the application
      launch(args);
   }
}

و النتيجة على النحو التالى :


تعلم JavaFx ..مقال25_ واجهة المستخدم الرسومية _ الكلاس ContextMenu 1-224
زهراء
زهراء
........
........

تاريخ التسجيل : 18/02/2011
المساهمات : 406
النقاط : 691
التقيم : 55
الدولة : مصر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى