- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好吧,这就是我的问题:
我正在使用一个应用程序,该应用程序创建一个其中包含 JTree 的对话框。当有人右键单击 JTree 时,我需要确定它是否在 2010 文件夹中。如果是的话,我需要创建一个弹出菜单,其中包含一个选项:“迁移到 2011”。
我现在遇到的是,我弹出带有正确文本的菜单,并在单击它或单击关闭时关闭。但是,当我单击“迁移到 2011”时,没有任何反应,它不会运行我的 ActionPerformed,并且在对话框窗口的顶部出现奇怪的闪烁。
我创建了一个新类来尝试诊断问题,但遇到了一个新问题。这是我为了尝试找出问题所在而制作的副类,当我运行它时,它填充得很好并打开了菜单项。但是,当您单击菜单选项时,它实际上并没有关闭菜单,而是仅运行 ActionPerformed 方法,而不运行其他任何内容。
这是代码示例:
//Import statements
public class MainClass extends JPanel {
public MainClass() {
final JPopupMenu popup = new JPopupMenu();
final JTree tree;
final JTextField jtf;
JMenuItem menuItem = new JMenuItem("Migrate to 2011");
ActionListener actionlistener = new PopupActionListener();
menuItem.addActionListener(actionlistener);
popup.add(menuItem);
DefaultMutableTreeNode top = new DefaultMutableTreeNode("Options");
DefaultMutableTreeNode a = new DefaultMutableTreeNode("A");
top.add(a);
DefaultMutableTreeNode a1 = new DefaultMutableTreeNode("A1");
a.add(a1);
DefaultMutableTreeNode a2 = new DefaultMutableTreeNode("A2");
a.add(a2);
DefaultMutableTreeNode b = new DefaultMutableTreeNode("B");
top.add(b);
DefaultMutableTreeNode b1 = new DefaultMutableTreeNode("B1");
b.add(b1);
DefaultMutableTreeNode b2 = new DefaultMutableTreeNode("B2");
b.add(b2);
DefaultMutableTreeNode b3 = new DefaultMutableTreeNode("B3");
b.add(b3);
tree = new JTree(top);
JScrollPane jsp = new JScrollPane(tree);
add(jsp, BorderLayout.WEST);
jtf = new JTextField("", 20);
add(jtf, BorderLayout.EAST);
tree.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent ae) {
popup.setVisible(false);
TreePath tp = tree.getPathForLocation(ae.getX(), ae.getY());
if (tp != null)
jtf.setText(tp.toString());
else
jtf.setText("");
if(SwingUtilities.isRightMouseButton(ae)){
popup.setLocation(ae.getLocationOnScreen());
popup.setVisible(true);
}
}
});
}
class PopupActionListener implements ActionListener {
public void actionPerformed(ActionEvent ae) {
System.out.println("it works!");
}
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.getContentPane().add(new MainClass());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 450);
frame.setVisible(true);
}
}
最佳答案
显示JPopupMenu
的正确方法是使用其show
方法。看看API :
除此之外,我建议使用 Actions
而不是简单的操作监听器。它们更加灵活,不仅可以在菜单上使用,还可以在工具栏等上使用。以下是有关操作的一些内容:
http://download.oracle.com/docs/cd/E17409_01/javase/tutorial/uiswing/misc/action.html
关于java - JPopupMenu 错误,未选择或关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3293999/
我有一个 Java 小程序,它将由用户必须与之交互的几个弹出菜单组成。但是,添加时 JPopupMenu 不会显示。这是我的代码: public class Parser extends JApple
我正在尝试创建带有两个弹出菜单的系统托盘图标,一个应该用鼠标左键调用,另一个应该用鼠标右键调用。 AWT 提供了创建 PopupMenu 的简单方法,但在不创建不可见的 JFrame 或其他内容的情况
在上一个问题中,我向社区询问为什么我的 JPopupMenu 没有出现在屏幕上。 我无法想出一个简单的、可运行的、可编译的示例。 所以,这就是我为你们所做的: 区域太小,无法绘制弹出窗口吗? 我希望我
我有下一个结构:JPopupMenu包含JPanel,其中包含JMenuItems。问题是,我无法使用它,因为当鼠标进入任何菜单项时,JPopupMenu就会消失。 SSCCE: public cla
这是我的 JPopupMenu 的代码以及我如何添加它,当我右键单击表格时它应该做出响应: JMenuItem deleteRows = new JMenuItem("Delete Row")
我有一个弹出菜单,其中包含一个带有图标 (I) 的 JMenuItem 和一个 JList。见下图。 ------------------------ | I | Clear |
我正在制作一个程序,它有一个带有两个按钮的弹出菜单,其中一个按钮应该关闭弹出菜单,但我不知道如何做到这一点,而且谷歌搜索也不太顺利。 我尝试过使用 popup.hide() 但菜单不会回来,尽管当我尝
我想在翻转事件时更改 jMenuItems 的背景颜色: 现在它是蓝色的,我想要白色的,我该怎么办? (我使用netbeans GUI) 最佳答案 你可以使用类似的东西: UIManager.put(
我在 JTable 上的弹出菜单以及该 JTable 允许多个间隔选择这一事实上遇到问题。我将详细解释我的情况,希望尽可能清楚。 我有一个基本数据类,我们称之为 Item,带有一个字符串 id(名称)
我有一个用于运行锦标赛的 Java 应用程序,在其中我构建了一个自动建议功能,该功能从数据库中获取名称并将其显示在 JPopupMenu 中。我无法根据需要复制这个错误,但偶尔一个 JPopupMen
我编写了一个简单的程序来了解 JPopupMenu 的工作原理。但我的代码有问题,它没有正确显示弹出菜单。请问谁能告诉我原因吗? public class PopUpMenu extends JFra
有关 JPopupMenu 行为的问题。我希望 JPopupMenu 在出现时不要失去焦点。此外,当 JPopupMenu 获得焦点时,用户应该能够单击/更新 Applet 的其他部分。 这可能吗?原
因此,对于我的学校项目,我正在创建一个类图制作器。我已经完成了 95%,我所需要的就是让 Jpopup 菜单出现。在核心中我有 3 个文件。扩展 JFrame 的 ApplicationModel、扩
我有一个弹出菜单,当鼠标悬停在组件上时会打开该菜单。现在我希望能够在弹出窗口仍然打开时开始拖动组件,但弹出菜单关闭事件总是消耗第一次鼠标单击。有解决方法吗? 最佳答案 public clas
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
我需要添加右键JPopupMenu到世界风显示。世界风显示位于 JPanel 。我几乎只是复制了ApplicationTemplate.AppPanel的成员变量和方法。 World Wind 示例中
下面我准备了一个小测试用例。我的问题是当我右键单击窗口时。 JPopupMenu 出现,但如果我单击 JWindow 菜单外的任何地方,它不会消失。我必须单击窗口上的某处才能摆脱它,这不是预期的行为。
我正在用 Java Swing 编写一个程序,在这个程序中会有一个搜索栏(这将是一个 JTextField),当在此字段中输入内容时,我想直接在弹出菜单中显示搜索结果在搜索栏下方,就像谷歌一样。我不必
如何获取当前显示在屏幕上的所有 JPopupMenu 组件的列表。 或者获取所有 JPopupMenu 组件,然后可以通过可见性、有效性等进行过滤。 我需要这个来编写测试。卡在 JPopupMenu-
我需要删除 JPopupMenu 中的背景和 Border。 JPopupMenu 应该是完全透明的。覆盖 paintComponent 不会给出肯定的结果。我也尝试在 BasicMenuItemUI
我是一名优秀的程序员,十分优秀!