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

java - 使用java左键单击任务托盘图标上的弹出窗口(菜单)

我正在使用java中的任务托盘图标,我喜欢使用左键打开一个弹出菜单,就像我在右键单击时打开的一样,请帮助我快速响应。

提前致谢...

这是用于右键单击的代码需要在左键单击时显示相同的弹出窗口...不要忘记放置任何名称为“titleImg.jpg”的图像@“src/img”文件夹

只需运行这个......这是一个工作示例,但我必须使用左键单击显示相同的弹出窗口

我已经检查了鼠标监听器,它监听托盘图标上的左键单击,但是如何使用它来显示弹出菜单???

0 投票
2 回答
2702 浏览

java - 处理 JPopupMenu 关闭

当 PopupMenu 中的一个 JMenuItem 被选中(鼠标悬停)时,我想突出显示屏幕上的一些元素。所以我在我的 JMenuItem 上使用 MouseListener

它工作正常,但如果我按 Esc,弹出菜单将被关闭,无需清理高亮。我如何拦截 JPopupMenu 的关闭来处理这个问题?

0 投票
2 回答
2189 浏览

java - 左键弹出

我正在尝试通过 Java 的动作侦听器在按钮上创建一个弹出窗口。

我有一些代码,但我无法让它工作,尽管我认为我已经接近了!这段代码来自一个例子,但是对于 Pmenu.show,我不得不删除第一个 arg,我不知道用什么替换它,这似乎是这里的问题。

0 投票
3 回答
7524 浏览

java - Swing 和 Nimbus:替换 JPopupMenu 的背景(附在 JMenu 上)

Nimbus 通常看起来很棒,但对于某些颜色组合,结果并不理想。就我而言, a 的背景JPopupMenu不适合,这就是我要手动设置它的原因。

我在 Java 7 上,有趣的是,Nimbus 完全忽略了UIManager(like PopupMenu.background) 中某些属性的设置。所以我唯一的选择是创建一个JPopupMenuoverrides的子类paintComponent(...)。我知道,这很糟糕,但至少它奏效了。

但是,如果您将 a 添加JMenu到另一个菜单,它会嵌入它自己的实例,JPopupMenu我无法弄清楚如何用我自己的子类替换它。

即使为嵌入式实例分配一个自己PopupMenuUI也没有带来任何结果。JPopupMenu如果调用了直接从被覆盖的方法继承的paint(...)方法,但是无论我做什么,都没有绘制任何内容。如果从 继承javax.swing.plaf.synth.SynthPopupMenuUI paint甚至没有被调用,结果是如果我根本没有设置自己PopupMenuUI的。

所以一个简单的问题是:如何JPopupMenu使用 Nimbus 作为 L&F 在 Java 7 上调整一个或(如果更容易的话)所有这些的背景颜色?

编辑:代码示例

看看下面的代码和结果:

我知道,有人说你应该在设置 L&F之前UIManager.put(key, value)使用or ,但对我来说这不会带来任何结果(意思是:根本没有改变默认颜色)。上面的代码至少带来了:UIManager.getLookAndFeelDefautls().put(key,value)

第一张截图

如果您使用JPopupMenu.setBackground(...). 这是因为 Nimbus 使用了一个内部绘制程序,它根据 Nimbus 的原色计算颜色并忽略组件的属性。在此示例中,您可以使用以下解决方法:

这带来了

第二屏

JMenu但是,如果您插入一个本身包装JPopupMenu您无法覆盖的a,则此解决方法不起作用:

正如预期的那样:

第三屏

JPopupMenu您可以使用它来检索它,JMenu.getPopupMenu()但不能设置它。即使在自己的子类中重写此方法JMenu也不会带来任何结果,因为JMenu似乎在JPopupMenu不使用 getter 的情况下访问它的封装实例。

0 投票
1 回答
1005 浏览

java - Java/Swing/Mac OSX:使用 ScreenMenuBar 将 JMenu 转换为 JPopupMenu

我有一个应用程序,它有一个带有菜单栏的主 GUI,以及另一个全屏框架,这使得主 GUI 的某些部分以全屏独占模式出现。当我处于全屏模式时,我想将菜单栏中的下拉菜单绑定为 jpopupmenu。

Swing 在 JMenu 中提供了 getPopupMenu() 函数。乍一看,这个功能似乎工作正常。我可以将鼠标悬停在菜单项上并移动到并查看子菜单。将鼠标悬停在子菜单上确实会强调子菜单,将鼠标悬停在普通菜单项(或单选按钮菜单项或复选框菜单项)上不会强调该项目。但是,我实际上无法单击菜单项。不过,键盘快捷键确实可以正常工作。该问题与此论坛上提出的问题基本相同(但问题未解决):

http://www.java-forums.org/new-java/16463-jmenu-jpopupmenu.html

如果我在菜单栏初始化并在主 GUI 中使用/显示之后添加一个 JMenuItem(因此在切换到全屏框架时),菜单项实际上是可点击的。该菜单项反过来也可以在主 GUI 的菜单栏中单击。初始化 jMenu 后直接执行 getPopupMenu() 不会改变任何内容。不使用全屏独占模式也不会改变任何问题。

编辑

似乎我遗漏了一些重要信息:我正在 Mac OSX 上测试应用程序并使用: System.setProperty("apple.laf.useScreenMenuBar", "true");

要制作菜单栏,请使用本机菜单栏。如果我禁用它,弹出菜单将按预期工作。这似乎是 mac java API 中的一个错误?他们有什么克服的方法吗?

我很抱歉忘记提及这一点,我不知道这会影响任何事情(尽管这似乎很明显)。

0 投票
1 回答
1238 浏览

java - JFrame中的JPopupMenu使用AWTUtilities.setWindowOpaque(window,false)使用合成器L&F没有出现

这让我很不解。基本上,我正在使用自定义 Synth L&F 使用透明形状的窗口开发多窗口应用程序。应用程序的部分调用JFrame/JDialog来自父框架的组件。在这些组件中,我有弹出菜单和组合框,问题是某些使用应用程序的人在调用时遇到弹出菜单不出现的问题。没有例外,代码执行良好,包括弹出菜单的“显示”方法。

除了在 mac OSX 上似乎没有问题之外,我试图将其确定为操作系统细节,但并没有太多乐趣。像我这样的一些 Windows 用户没有遇到任何问题,而其他人则......

我还追踪了设置窗口不透明度的违规代码行:

如果我删除了这个 LOC,那么弹出窗口会很好。除了用以下内容替换此 LOC:

产生同样的问题。另一件事是,如果我使用默认的 L&F,弹出窗口呈现正常。

只是为了确认两个组件的问题是相同的,JFrame并且JDialog只是想知道是否有其他人遇到过这个问题或者可以指出我可能的原因。

干杯

测试源重现:

和testskin.xml:

如前所述,删除:

使组合框弹出菜单渲染正常,此外为所有样式(在 style="backingStyle" 下)添加默认背景,例如:

至少会使弹出菜单出现,但仍无法正确呈现。我在三个单独的 windows xp 虚拟机上试过这个,都遇到同样的问题。此外,我认为我没有提到这一点,但它是基于 JDK 7 构建的,并且在所有情况下都在等效的 JRE 上运行。我自己在 Windows 7 Ultimate 64 位上没有遇到任何问题,另一位使用 Windows 7 Premium 64 位的用户确实遇到了同样的问题。


一些进展,如果出现以下情况,弹出菜单组件的绘制方法无法调用:

已设置。在调用 'show' 方法后手动调用 repaint、updateUI、revalidate 将使弹出菜单渲染正常。对于设置自定义 UI 并覆盖“createPopup”方法的组合框元素,使用扩展 javax.swing.plaf.basic.BasicComboPopup 的类,该类在显示时调用 repaint/updateUI/revalidate,例如:

将使组合框菜单呈现正常。但是,由于弹出窗口是在私有方法中创建的,因此我还没有找到弹出窗口的 submneu (JMenu) 项目的解决方法。这似乎是一个错误,但如果我做错了什么,有人可以告诉我:)

干杯

乔纳森

0 投票
1 回答
2872 浏览

java - 如何让我的弹出菜单在 Java 中工作?

我找到了一个弹出菜单程序,它可以独立运行。然后我制作了另一个程序“Note”,我希望在其中添加弹出菜单功能。

现在弹出菜单部分如下:

“注意”代码如下(部分):

但是使用这些代码,“注释”可以正常工作,而弹出菜单不起作用。我猜jFrame相关的代码不正确,但是不知道怎么改。谁能帮忙?谢谢!

另外:我使用 NetBeans 制作项目,下面是编译信息(很难理解)。

0 投票
2 回答
784 浏览

java - How to catch user choice of jradiobutton in jpopupmenu?

I have been able to show a popup menu in my frame and the menu items, a group of radio buttons may be navigated with the arrow keys. When the user presses Enter/Return the popup menu is no longer visible and I assume that it is possible to determine which button was chosen and assign an action.

I have also implemented key mapping for the whole frame like this:

How do I determine what radio button was selected before the user pressed Enter?

0 投票
1 回答
258 浏览

java - JMenu 在 Windows7 LAF Java7 中使用 focuslost 事件

如果单击另一个组件时弹出菜单仍然打开,则该组件不会收到该事件,因为它可能已被弹出窗口消耗。一般来说,所有 JPopupmenus 都会发生这种情况。这只发生在带有 Windows LAF (Windows7) 的 Java 7 中。有解决方法吗?这是一个已知的错误吗?

0 投票
3 回答
2775 浏览

java - 如何获取调用 JPopupMenu 的组件?

我有一个添加到多个 JTable 的 JPopUpMenu,我想获得右键单击的特定表,以便对其进行更改。如何在 Action Listener 中获取触发 JPopupMenu 的组件?