gpt4 book ai didi

java - 使 Control 单击的行为类似于在 JList 上单击鼠标右键

转载 作者:行者123 更新时间:2023-12-02 07:01:28 25 4
gpt4 key购买 nike

我正在 Mac OS 上编写一个 swing 应用程序,并且希望在按住 Ctrl 键单击以及右键单击时在 JList 上显示上下文菜单。现在的问题是,按住 ctrl 键单击总是会清除选择,这不是我想要的(想象一下文件浏览器中的上下文菜单让用户删除所选文件)。

是否有一种简单的方法可以使 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 或不是。

关于java - 使 Control 单击的行为类似于在 JList 上单击鼠标右键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16613171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com