问题标签 [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 投票
2 回答
3560 浏览

java - Java 弹出按钮

注意:您可能必须编译并运行我的示例才能完全理解我的问题。如果这不是犹太洁食,我提前道歉。

我正在尝试创建一个基于 aJToggleButton和 a的 Swing 控件JPopupMenu

如果弹出菜单可见,则选择切换按钮,如果弹出菜单不可见,则取消选择切换按钮。因此,行为类似于 a JComboBox,只是弹出窗口可以包含任意组件。

下面的代码是我将如何创建控件的示例(除了它将在自己的类中......类似于 a JPopupToggleButton)。不幸的是,它在不同的外观和感觉下表现出不同的行为(我已经用 Metal 和 Nimbus 对其进行了测试)。

此处发布的代码在 Metal 中的行为符合预期,但在 Nimbus 中则不然。使用 Nimbus 时,只需通过反复单击切换按钮来显示和隐藏弹出窗口,您就会明白我的意思。

排除以下行使代码在 Nimbus 中的行为符合预期,但在 Metal 中则不然。同样,只需继续单击切换按钮即可了解我的意思。

所以这是我的两个问题:

(1) 在 Nimbus 中,为什么隐藏弹出面板的点击没有传递给切换按钮,就像使用 Metal 一样?

(2) 我怎样才能解决这个问题,使它适用于所有的外观和感觉?

0 投票
1 回答
367 浏览

java - 仅在鼠标单击 Swing 时打开 popupMenu

我有一个与 JPopupMenu 相关的问题,也许有人可以帮助我。

据我所见,当您按下 JMenu(这是在 JMenuBar 中)或将鼠标悬停在 JMenu 上(如果这是在 JPopupMenu 中)时,JPopupMenu 会打开。

所以,我有一个包含 JMenu 的 JMenuBar(我们称之为“文件”)。当我按下“文件”时,会打开一个 JPopupMenu,其中包含一个 JMenuItem 和另一个 JMenu(我们称之为“属性”)。有什么方法可以将与文件 JMenu 中的行为相同的行为应用于属性 JMenu:仅在用户单击它而不将鼠标悬停在其上时打开 JPopup?

我知道这是试图避免 JMenu 的正常行为,但是你们中的任何人都知道这是否可能?

0 投票
3 回答
2333 浏览

java - Java rowAtPoint() 没有返回正确的值

我正在制作一个 java 项目,我正在使用JTable. 我想做的事情是将 a 链接popupmenujtable. popupmenu有四种不同的items。选择中的一些items需要知道的。问题出在-function 中。我无法获得返回正确的函数。我点击一个with ,我在我点击的同一列中弹出一个应该是的。但是当我使用or -functions (在带有标签“addSelected”或“deleteSelected”的 menuItem 中)并且没有选择任何(s)时,我使用-function 来查找我正在点击的. 看来rowjtableselectRowrowjtableright mouse buttonpopupmenuaddSelectedRowremoveSelectedRowrowselectRowrowright mousebuttonrowAtPoint(Point p)不能只是找到一个正确的行。它返回 0 或 -1。我已经为这个问题苦苦挣扎了将近一个星期,所以请拉皮条我的代码:D 我希望代码足够干净:D

<--已编辑--> http://painkiller.comlu.com/images/1.jpg

这是一个问题的屏幕截图。 JTable总是至少有一排。我单击任意行(在这种情况下为第二row)。Row不是按目的选择的。现在,如果我按“Lisää valittu”——意思是“ Add selected”,函数selectRow()将被调用。

/ * *地点

首先我尝试e.getPoint() *从以下e.getPoints() -> java.awt.Point[x=4,y=8] 位置返回行索引号rowAtPoint():0

然后我尝试SwingUtilities.convertPoint() * SwingUtilities.convertPoint(tablePopMenu, e.getPoint(), jTbl);->从以下java.awt.Point[x=28,y=10] 位置返回行索引号rowAtPoint():2

所以它似乎可以工作,但有时函数会抛出 -1 或 0。(需要检查出那个错误)但大多数情况下工作得很好。

<-- -->

感谢人们拯救了我的一天!

0 投票
7 回答
12293 浏览

java - 向 JPopupMenu 添加垂直滚动?

我想添加一种方法来滚动浏览 a 中的菜单项JPopupMenu,就像滚动浏览 a 中的项目列表一样JComboBox

假设我有 10 个菜单项。我想一次只显示 5 个菜单项,我会使用底部或顶部的垂直滚动按钮JPopupMenu来显示未列出的菜单项并隐藏我刚刚看到的菜单项。

可能吗?我正在使用 JIDE Software 的JideSplitButton,单击时会显示 a JPopupMenu。我试图保持放置 的命令栏的外观和感觉JideSplitButton,所以我不想用 a 替换它,JComboBox除非我真的必须这样做。

0 投票
2 回答
819 浏览

java - 从弹出项中获取 jTable 行号

从附图中我有一个 jTable在此处输入图像描述

右键单击一行会启动一个 jPopup,其中包含一个项目“Thread Stop”。

我想通过单击此菜单项返回行号

如何做到这一点?

谢谢。

0 投票
1 回答
283 浏览

java - 如何从自定义树创建 JPopupMenu

下面的方法从字符串创建自定义数据树。

我正在研究一种生成带有许多子菜单的弹出菜单的方法。基本上这些菜单是动态给出的,所以我有一个算法来处理使用下面的字符串创建子菜单。为了做到这一点,我通过使用分隔符将这个字符串转换为 Java 自定义树。

我解析的动态字符串值示例:

字符串 str = "Menu1;Menu2[;Menu2A;Menu2B[;Menu2B-A;Menu2B-B]];Menu3;";

当前方法创建如下结构的树:

我被困在如何基于这棵树创建带有子菜单的 JPopUpMenu。我想使用递归方式,但不知道该走哪条路。

0 投票
2 回答
1145 浏览

java - Canvas下的JPopupMenu显示

我有一个画布、一些文本字段和一个上下文菜单。

当我启动应用程序并右键单击画布时,会显示一个弹出菜单。但是当我在文本字段中写一些东西而不是右键单击画布时,弹出窗口将显示在画布后面。

知道如何解决吗?

0 投票
3 回答
2842 浏览

java - 停止 JPopupMenu 窃取焦点

我有一个JTextField我希望建议结果与用户输入相匹配的结果。我将这些建议显示JListJPopupMenu.

但是,当通过编程方式打开弹出菜单时show(Component invoker, int x, int y),焦点从JTextField.

奇怪的是,如果我setVisible(true)改为调用,焦点并没有被盗;但是JPopupMenu没有附加到任何面板上,并且当在盒子打开时最小化应用程序时,它会停留在窗口上。

我也尝试将焦点重置为JTextFieldusing requestFocus(),但随后我必须恢复插入符号的位置 using SwingUtilities.invokeLater(),并且稍后的调用给用户一点余地来处理现有内容/覆盖它/或做其他不可预测的事情。

我得到的代码实际上是:

任何人都可以建议最好的途径来以JPopupMenu编程方式显示,同时保持对 的关注JTextField

0 投票
2 回答
9495 浏览

java - 在 JTree 节点摇摆处右键单击显示弹出框

我只想在节点的右键单击上显示弹出框JTree,而不是整个JTree组件。当用户右键单击 JTree 节点时,会出现弹出框。如果他右键单击一个空白区域,JTree那么它不应该出现。因此,为此我如何仅检测JTree节点的鼠标事件。我在网上搜索了很多次,但找不到解决方案,所以请帮助我。

谢谢。

0 投票
0 回答
340 浏览

macos - 在我的 GUI 外部单击时,JPopUpMenu 不会隐藏/关闭

我在 Mac OSX 上有一个 swing GUI,其中有一个JTable,当我单击 JTable 时,会出现一个JPopupMenu,它有不同的选项。

问题是当我右键单击并出现 JPopupMenu 时。突然我在我的 GUI 外部单击我的 JPopupMenu 仍然打开,并且在其他窗口上重叠,即使我的 Macbook 注销 JPopupMenu 仍然打开。

在 JPopupMenu 外部单击时如何关闭所有打开的弹出窗口。