问题标签 [jpopupmenu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1703 浏览

java - JTree 中的 JPopupMenu 问题

我有这个问题。在自定义 JTree 中,我实现了一个 JPopupMenu 以根据使用 MouseListener 选择的节点显示不同的 JMenuItem。单击鼠标右键时会显示 JPopupMenu。问题是,如果我不从 PopupMenu 中选择一个项目,而是选择树中的另一个节点,无论是使用右按钮还是左按钮,此事件都不会被树捕获 MouseListener 有人能指出我正确的方向吗?解决这个?如果有可用的示例,我将不胜感激。谢谢。

0 投票
1 回答
4507 浏览

java - 与后端数据结构同步的 JTable 设计

我有一个 JTable,它是使用表模型从数据结构中加载的。数据结构的格式为NavigableMap<Float,NavigableMap<Float,Boolean>>. 示例数据是:

上述数据格式在 DS 中表示为

我已经设法使用表模型在 Jtable 中表示上述给定数据。一旦数据从 DS 加载到表中,我必须允许用户编辑。现在这是我遇到问题的地方。我怀疑是否应该保留数据结构与表中的更改同步,或者一旦用户完成编辑,我应该从表中重新创建 DS,然后用旧的替换它。

此外,我需要验证数据(例如从上面 - 假设用户想要编辑值 30.1。他应该只被允许输入 12.1 和 45.6 之间的值。由于数据表是字符串的(一旦加载)我是计划使用正则表达式和键侦听器并使用所有与正则表达式不匹配的用户按键和不在范围内的值。我不确定这是一个好主意还是有什么影响。我会想得到一些关于这方面的建议。

0 投票
3 回答
4362 浏览

swing - 选中复选框时如何防止 JPopUpMenu 消失?

我想JCheckBoxMenuItem在 a 中使用 s JPopupMenu。它可以工作,但问题是当复选框项目被选中或取消选中时弹出菜单会消失。因此,如果要选中/取消选中多个项目,则需要反复启动弹出窗口,这很烦人。

奇怪的是,如果我只使用JCheckBox菜单中的普通项目(而不是JCheckBoxMenuItems),行为就应该是这样:弹出窗口停留在那里,并且可以选中/取消选中复选框。完成后,只需单击外部即可关闭弹出窗口。

当项目有 s 时,如何使弹出窗口表现得像这样JCheckBoxMenuItem?我更喜欢使用JCheckBoxMenuItems 因为它们的外观。

0 投票
2 回答
1936 浏览

java - 如果底层窗口在 ESC 上关闭,如何为 JPopupMenu 启用 ESC-Close?

想象一下两种常见情况的组合:在 VK_ESCAPE 上关闭的 JDialog(或 JFrame)(设置为根窗格上的键绑定)和应该在 ESC 上关闭的内部 JPopupMenu。问题是:如果弹出窗口可见,按转义总是关闭对话框 - 事件。显然弹出窗口甚至没有收到关键事件,因此它不能被弹出窗口使用。有没有办法让它正常工作,以便在第一个 ESC 事件时弹出窗口关闭,而在第二个对话框关闭?顺便说一句:它确实可以与 JComboBox 一起使用,默认情况下,当按下转义键时它会关闭。

0 投票
1 回答
1615 浏览

java - Java:在不传递调用程序组件的情况下显示 JPopupMenu

当我让弹出一个 JPopupMenu 而不传递“调用程序组件”时,菜单不起作用:子菜单没有打开并且没有重新绘制。但是当我创建一个内部带有 JLabel 的完全无用的 JFrame,并将 JLabal 作为调用者传递时,它可以正常工作......

任何建议,如何避免创建无用的框架。而且我的应用程序确实没有打开任何框架,它只需要弹出一个简单的菜单。

谢谢

0 投票
2 回答
644 浏览

java - 单击 JCheckBox 时如何使 JPopupMenu 出现?

我有JCheckBox一个程序(标记为“使用 MiniTimer”),当右键单击时,会显示一个JPopupMenu选项“关闭时显示”、“最小化时显示”、“关闭或最小化时显示”和“不要使用 MiniTimer ”。当它被左键单击时,我怎样才能让它JPopupMnu出现在下面?JCheckBox

请注意,我尝试设置JCheckBoxto的 actionPerformed 方法miniTimerPopupMenu.setVisible(true);,但 Merel 使JPopupMenu出现在屏幕的左上角,即使这样,它也不会注册任何交互。有没有人想分享任何经验或建议?

0 投票
2 回答
1775 浏览

java - 显示子菜单时的 JPopupMenu 错误/故障(?)

我的弹出菜单有这个奇怪的错误。它很少发生,而且看似随机。问题是当我的 JPopupMenu 中有一个子菜单时 - 当我选择子菜单时,主菜单消失并且子菜单被错误地绘制(就像主菜单的缓冲区被绘制在子菜单上)。我仍然可以使用键盘导航它。

这是一些屏幕截图:这就是它的样子

替代文字

这就是出现错误时的样子:

替代文字

所以第二张图片上的故障是子菜单应该在的地方。

什么可能导致这种情况?没有抛出异常,它似乎与平台无关,所以我不知道如何缩小范围。请帮忙。

编辑下面是重现问题的 sscce:

0 投票
2 回答
13393 浏览

java - 查找调用了弹出菜单的 JTable 行

我有一个 JTable 和一个特定于每一行的弹出菜单。我想计算用户右键单击鼠标(Windows L&F)以调出弹出菜单的行。

我为表创建了一个 MouseListener,因此它在单击时获取 MouseEvent,并在正确的位置显示弹出菜单。但是当用户从弹出菜单中选择一个项目时,我无法确定用户首先右键单击的行是什么。弹出菜单调用的事件不再具有右键单击发生的 x,y 坐标。

我已经查看了弹出窗口的位置,但它属于框架,而不是表格,所以它和它的父级都没有我想要的正确 x,y 值。

我通过子类化 JPopupMenu 并设置我希望它在 MouseListener 中具有的 x 和 y 值来解决它。但在我看来,这对于任何想要在 JTable 上放置弹出菜单的人来说都是一个普遍的问题,我想知道我错过了什么。

有没有一种更简单的方法来做到这一点,尤其是不涉及子类化 JPopupMenu 的方法?

0 投票
6 回答
1457 浏览

java - 创建一个检查属性窗口,按钮作为 JDialog 驱动

我最初提出的问题并没有清楚地说明我的问题/问题,所以我会更好地解释它。我有一个JButton将 a 设置JDialog为可见的。JDialog 有一个WindowListener将其设置为在事件中不可见windowDeactivated(),只要用户在对话框外单击,就会触发该事件。该按钮ActionListener检查对话框是否可见,如果为真则隐藏,如果为假则显示。

windowDeactivated()只要用户在对话框外单击,无论是否单击按钮,都将始终触发。我遇到的问题是当用户单击按钮关闭对话框时。对话框由 关闭,WindowListener然后ActionListener尝试显示它。

如果windowDeactivated()没有setVisible(false),则对话框仍处于打开状态,但位于父窗口后面。我要问的是如何访问 click inside 的位置windowDeactivated()。如果我知道用户单击了按钮并且 windowDeactivated() 可以跳过隐藏对话框,那么按钮ActionListener将看到它仍然可见并隐藏它。

0 投票
2 回答
604 浏览

swing - 如何将 JPopupMenu 添加到 JMenuBar?

我有一个带有弹出菜单的应用程序。我想以通常的方式使用弹出窗口(即,它应该在用户右键单击窗口中的任意位置时出现),但我也想将它附加到窗口顶部的主菜单栏。我不知道该怎么做。

我认为它就像调用 myJMenuBar.add(myPopupMenu) 一样简单,但这不起作用。

JMenuBar.add() 需要一个 JMenu 参数,而不是一个 JPopupMenu。

有没有人有什么建议?