- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果在单击另一个组件时弹出菜单仍处于打开状态,则该组件不会获取事件,因为它可能已被弹出菜单占用。一般所有 JPopupmenus 都会发生这种情况。这仅发生在带有 Windows LAF (Windows7) 的 Java 7 中。有解决方法吗?这是一个已知错误吗?
import javax.swing.*;
import java.awt.event.*;
public class Test
{
public static void main(String[] s)
throws Exception
{
String lookAnfFeelClassName = UIManager.getSystemLookAndFeelClassName();
UIManager.setLookAndFeel(lookAnfFeelClassName);
JMenu menu = new JMenu("TEST Menu");
JMenuItem menuItem = new JMenuItem("Menu Item 1");
JMenuBar menuBar = new JMenuBar();
menu.add(menuItem);
menuBar.add(menu);
final JButton b = new JButton("Test");
b.setBounds(5, 50, 60, 20);
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//If the Menu is open when I press the button, the putton is not pressed
//so I have to press it again.
JOptionPane.showMessageDialog(b, "Button Pressed");
}
}
);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(150, 150);
frame.setJMenuBar(menuBar);
frame.getContentPane().setLayout(null);
frame.getContentPane().add(b);
frame.setVisible(true);
}
}
最佳答案
这是解决问题的魔法线:
UIManager.put("PopupMenu.consumeEventOnClose", Boolean.FALSE);
我在查看 BasicPopupMenuUI 类的源代码后发现了这一点。显然,根据代码中的以下注释,这种行为是一种深思熟虑的设计选择,但对我来说确实感觉像是一个错误。
// Ask UIManager about should we consume event that closes
// popup. This made to match native apps behaviour.
顺便说一下,它也发生在 Java 5 和 6 中。
关于java - JMenu 在 Windows7 LAF Java7 中使用 focuslost 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12251161/
例如,可能有不同的 LAF。 JPanel 及其所有子项? 我的程序的核心(全部在一个 JPanel 中)严重依赖于组件的高度和宽度(通过不同的 LAF 进行更改),因此必须有一个恒定的 LAF。其余
我自定义我的 JComboBox 如下。 该程序在默认 LAF 下运行正常,但是每当我将 LAF 更改为 System LAF(另一个 LAF,Nimbus 也可以)时,单击按钮后就会出现无限循环。我
我有一个用 Java 编写的应用程序。当我使用跨平台 LAF(金属)从 eclipse 运行它时UIManager.setLookAndFeel(UIManager.getCrossPlatformL
我正在 Netbeans 中构建一个 GUI,它在设计器中看起来不错,但当我运行该程序时,它看起来很垃圾。我使用的是 Mac,所以我觉得使用 Mac OS LAF 看起来会更好,但是当我在 Windo
在我编写的“Battleship”程序中,我包含了将程序的“外观和感觉”更改为 SystemDefault、“Metal”(Java 默认)或“Motif”(也包含在 Java 中)的可能性。如果您从
我正在使用 Netbeans IDE,并且我想在 Java 应用程序中使用 Insubstantial LAF (http://insubstantial.posterous.com/)。但是,我不知
我有一个带有两个 JPanel 的应用程序,它们必须具有不同的样式。我使用 Synth LaF,但我不知道如何在一个 xml 文件中拥有两种不同的样式。我定义了一种样式并将其绑定(bind)到“面板”
我们在带有Solaris的服务器上运行构建。将 jre 1.6 更改为 jre 1.7 后,运行所有测试的实用程序开始抛出异常(抱歉我的英语): [java] Exception in thread
我是 Java 的新手,我搜索了很多网络和 Java 文档,但我不明白如何将 JTatto LAF 集成到我的应用程序中。 我下载了 .jar 文件并将其保存到我的类(class)所在的同一文件夹中。
我有一个应用程序在几个地方使用禁用的 JTextFields,这些地方是透明的 - 允许显示背景而不是文本字段的正常背景。 当运行新的 Nimbus LAF 时,这些字段是不透明的(尽管设置了 set
当我使用 Nimbus 外观时,我在 addPropertyChangeListener 处收到 NullpointerException 。当我使用 Linux 标准 LAF(金属)时,一切工作正常
如何子类化 JTabbedPane 并为子类的每个实例提供与默认 LaF 不同的外观?我仍然想访问默认的 JTabbedPanel,因此简单地覆盖全局 LaF 不是一个选项。 谢谢。 最佳答案 您可以
使用 Synth LaF,我无法将 JLabel 的前景颜色设置为“禁用”状态。有人成功做到这一点吗?这是 LaF.xml 文件中标签的样式定义。
我想删除 LAF JCheckbox 周围的蓝色东西: 我该怎么做? 非常感谢 最佳答案 图标是 LAF 的一部分。 如果您不喜欢默认图标,那么您可以随时提供自己的图标: checkBox.setIc
如何从 Swing JComboBox 中删除 LAF 样式? 最佳答案 实际上您无法删除 LAF,因为那时不会呈现任何内容,但您可以仅为该组合框设置另一个 LAF。 像这样: combo.setUI
我正在通过动态更改 UIDefaults 来自定义 Swing 应用程序。最终目标是更改其中的许多内容(颜色、字体、大小、边框等)并根据每个用户保存结果。虽然它可能会给应用程序带来一些非标准的外观,但
我最近一直在尝试将系统转换为统一的外观和感觉(在本例中为 Nimbus)。然而,某些组件需要更改默认值,我不想仅仅因为单个组件而更改默认值。 我正在尝试覆盖 JTree 组件的行突出显示颜色。我已经设
我目前正在使用 swing 应用程序。对于开发人员来说,最重要的是用户必须熟悉 GUI。我想开发一个应用程序,它可以具有所有平台的 native (平台的默认)外观在计算机上使用的(我的意思是说我的应
最近我一直在使用 Nimbus Look and Feel 开发一个 Swing 项目。我想将 JOptionPane 中的所有按钮设置为具有相同的大小,但徒劳无功。 import javax.swi
我刚刚注意到,当我在第二个屏幕(没有任务栏)上最大化一个框架时,它最终会达到人们预期的边界(如果任务栏在那里)。 我刚刚注意到这一点已经切换到 Windows 7。以前在 Vista 中,我有一个实用
我是一名优秀的程序员,十分优秀!