سعاد نشر 10 ديسمبر 2015 أرسل تقرير نشر 10 ديسمبر 2015 على تطبيق لديّ بلغة Java أضفت عنصر JMenu، وأريد تفعل إظهار قائمة عند الضغط بزر الفأرة الأيمن، مع تحديد مكان ضغط الفأرة، كيف ذلك؟ اقتباس
0 E.Nourddine نشر 15 ديسمبر 2015 أرسل تقرير نشر 15 ديسمبر 2015 يمكن إضافة القائمة الافتراضية والتي تظهر بعد الضغط على أي عنصر في التطبيق، حيث تخصص الوظيفة التي سينفذها التطبيق عن كل اختيار، ولنقل مثلا لدينا حقل نصي JTextArea، ونريد عمل وظائف النسخ والقص والحذف...سنقوم أولا بعمل القائمة:import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.JSeparator; import javax.swing.KeyStroke; import javax.swing.event.UndoableEditEvent; import javax.swing.event.UndoableEditListener; import javax.swing.text.JTextComponent; import javax.swing.undo.UndoManager; @SuppressWarnings("serial") public class DefaultContextMenu extends JPopupMenu { private Clipboard clipboard; private UndoManager undoManager; private JMenuItem undo; private JMenuItem redo; private JMenuItem cut; private JMenuItem copy; private JMenuItem paste; private JMenuItem delete; private JMenuItem selectAll; private JTextComponent jTextComponent; public DefaultContextMenu() { undoManager = new UndoManager(); clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); undo = new JMenuItem("Undo"); undo.setEnabled(false); undo.setAccelerator(KeyStroke.getKeyStroke("control Z")); undo.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { undoManager.undo(); } }); add(undo); redo = new JMenuItem("Redo"); redo.setEnabled(false); redo.setAccelerator(KeyStroke.getKeyStroke("control Y")); redo.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { undoManager.redo(); } }); add(redo); add(new JSeparator()); cut = new JMenuItem("Cut"); cut.setEnabled(false); cut.setAccelerator(KeyStroke.getKeyStroke("control X")); cut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { jTextComponent.cut(); } }); add(cut); copy = new JMenuItem("Copy"); copy.setEnabled(false); copy.setAccelerator(KeyStroke.getKeyStroke("control C")); copy.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { jTextComponent.copy(); } }); add(copy); paste = new JMenuItem("Paste"); paste.setEnabled(false); paste.setAccelerator(KeyStroke.getKeyStroke("control V")); paste.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { jTextComponent.paste(); } }); add(paste); delete = new JMenuItem("Delete"); delete.setEnabled(false); delete.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0)); delete.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { jTextComponent.replaceSelection(""); } }); add(delete); add(new JSeparator()); selectAll = new JMenuItem("Select All"); selectAll.setEnabled(false); selectAll.setAccelerator(KeyStroke.getKeyStroke("control A")); selectAll.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { jTextComponent.selectAll(); } }); add(selectAll); }قمنا في البداية باستدعاء المكتبات والحزم اللازمة .عرّفنا كلاس DefaultContextMenu والتي ترث من JPopMenu جميع خصائصها.لنقوم بعد ذلك بتغيير الدوال الموجودة سابقاً داخل JPopMenu حسب حاجتنا لها.وهذه طريقة استعمال الدوال السبقة على عنصر JTextArea:JTextArea textArea = new JTextArea(); DefaultContextMenu contextMenu = new DefaultContextMenu(); contextMenu.add(textArea);JTextArea يتوفر الآن على قائمة عند ضغطه بزر الفأرة الأيمن، أو ما يطلق عليها بـ Context Menu.Bringing Up a Popup Menu اقتباس
السؤال
سعاد
على تطبيق لديّ بلغة Java أضفت عنصر JMenu، وأريد تفعل إظهار قائمة عند الضغط بزر الفأرة الأيمن، مع تحديد مكان ضغط الفأرة، كيف ذلك؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.