0
我正在Mac OS上編寫一個swing應用程序,並希望我的上下文菜單出現在JList出現時按住Ctrl單擊以及當我右鍵單擊。現在的問題是,按Ctrl單擊總是清除不是我想要的選擇(想象一下文件瀏覽器中允許用戶刪除選定文件的上下文菜單)。使控制單擊行爲就像右鍵單擊JList
是否有一種簡單的方法可以讓按住Ctrl鍵的鼠標在選擇上表現得像右鍵單擊一樣?
我正在Mac OS上編寫一個swing應用程序,並希望我的上下文菜單出現在JList出現時按住Ctrl單擊以及當我右鍵單擊。現在的問題是,按Ctrl單擊總是清除不是我想要的選擇(想象一下文件瀏覽器中允許用戶刪除選定文件的上下文菜單)。使控制單擊行爲就像右鍵單擊JList
是否有一種簡單的方法可以讓按住Ctrl鍵的鼠標在選擇上表現得像右鍵單擊一樣?
有一個更簡單的方法來實現這一點:使用setComponentPopupMenu
,它會照顧所有額外的工作和操作系統特定的右鍵單擊問題。
我在Windows和Mac測試(和它的作品):
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.SwingUtilities;
public class TestJPopup {
protected void initUI() {
JFrame frame = new JFrame(TestJPopup.class.getSimpleName());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPopupMenu popupMenu = new JPopupMenu();
popupMenu.add(new JMenuItem("One"));
popupMenu.add(new JMenuItem("Two"));
popupMenu.add(new JMenuItem("Three"));
JList list = new JList(new String[] { "Hello", "World", "Something", "Else", "Out", "Of", "Ideas" });
list.setComponentPopupMenu(popupMenu);
frame.add(list);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new TestJPopup().initUI();
}
});
}
}
或者(但似乎沒用),你可以使用的方法java.awt.event.MouseEvent.isPopupTrigger()
知道你是否應該顯示JPopupMenu
與否。
太好了,謝謝! – user1573546
哦,我剛剛意識到,在我的具體情況下,這不會如此輕鬆,因爲我根據當前選擇動態構建菜單。我將不得不重新組織我的代碼,以便在選擇更改時重新生成菜單。我會研究這一點。 – user1573546