问题标签 [nimbus]

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 回答
14476 浏览

java - Java:如何动态覆盖类的方法(类最终不在类路径中)?

如何动态+有条件地调用类的方法?
(类最终不在类路径中)

比方说,我需要 class NimbusLookAndFeel,但在某些系统上它不可用(即OpenJDK-6)。

所以我必须能够:

  • 了解该类可用(在运行时),
  • 如果不是这种情况,请跳过整个过程。
  • 我如何设法覆盖动态加载类的方法
    (从而创建它的匿名内部子类)?

代码示例

编辑
现在我按照建议编辑了我的代码,以NoClassDefFoundError使用 try-catch 进行拦截。它失败。我不知道,这是否是 OpenJDK 的错。我明白InvocationTargetException了,造成的NoClassDefFoundError。有趣的是,我无法捕捉到InvocationTargetException:无论如何它都被抛出了。

EDIT2: :
发现原因:我正在环绕SwingUtilities.invokeAndWait(...)测试的方法,并且在加载 Nimbus 失败时invokeAndWait会抛出该调用。NoClassDefFoundError

EDIT3: :
任何人都可以澄清一下可能发生的地方吗? NoClassDefFoundError因为它似乎总是调用方法,而不是使用不存在的类的实际方法。

0 投票
2 回答
10687 浏览

java - java中的setOpaque()

谁能解释为什么 Nimbius 对待 setOpaque() 的方式与其他 java LaF 不同。它破坏了我的代码,因为通常透明的组件不再是。

编辑:这个问题似乎只涉及 JTextAreas (这是我需要的)或类似的组件。

编辑编辑:这是实际应用程序的屏幕。在应用垃圾神解决方案时,背景仍然没有显示出来。

替代文字

编辑 编辑 编辑:
我尝试了垃圾上帝的建议来覆盖paint()。我为此辛勤工作了几个小时,但无法让它工作。我能够让背景显示出来,但是 JinternalFrame 无法移动、调整大小和选择其文本。调用 super.paint(g) 未能解决解决方案。有没有一种我可能会错过的简单方法来做到这一点?
我对此采取了新的方法。JInternalFrame 内部是一个 JLayeredPane。
第 0 层 - JLabel
第 1 层 - JTextArea

当 JInternalFrame 移动或调整大小时:

  1. 让自己隐形
  2. 截取它在容器中所在位置的屏幕截图
  3. 用它拍摄的图像绘制 JLabel
  4. 使自己再次可见。

因为我根本无法让 JInternalFrame 透明。我模拟了它的透明度。唯一的问题是,与此相关的开销很大。有什么想法吗?

替代文字

0 投票
1 回答
845 浏览

java - 在 Nimbus 设置后返回 GUI

java新手,遇到一个问题,无论我做什么,我似乎都无法解决,所以任何帮助都将不胜感激。

我有一个 Java 小应用程序,并集成了一个使用 Nimbus 外观的弹出式日历 (WWW)。我的问题是,在第一次调用弹出日历后,我无法为我的 GUI 获得相同的外观和感觉。我有两个选择。要么找到一种方法来重置设置,以便我的 GUI 与以前一样并调用弹出窗口,要么输入一些不确定在哪里(主类)的代码,以便所有 GUI 使用 nimbus 外观。

这是弹出日历的代码

或者我在哪里插入代码以使我的所有 GUI 都具有 nimbus 的外观和感觉

0 投票
3 回答
30760 浏览

java - 如何在 main 中设置 Nimbus 的外观和感觉

我刚刚学习Java,仍然无法解决我遇到的这个小问题。

我的弹出日历使用 Nimbus 外观,但我有面板和容器 Jtables 使用 Java 的外观 - 我试图让每个 GUI 屏幕/窗口都使用 Nimbus 外观。Merky 建议将以下代码放在我的 main 中,以使每个后续屏幕都具有 Nimbus 的外观和感觉,但我无法让它工作,那么我应该在哪里以及如何放置此代码?

0 投票
1 回答
3907 浏览

java - 以图形方式自定义 Nimbus 外观的工具

我正在寻找几个月前使用的工具,但我不记得名字了。

这是用于自定义 Nimbus Swing 外观和感觉的图形工具。在窗口的右侧,有一组示例 Swing 组件,左侧是所有可自定义属性的列表(与 的结果相同UIManager.getDefaults())。该工具允许更改属性的值(颜色、字体、整数值),并在右侧实时查看结果。

该工具也允许导出文件中的更改(设置自定义值的 java 代码)。

我记得整个程序只是一个大的java文件。而且我认为这个工具是另一个项目的一部分(虽然该工具是独立的)。

0 投票
3 回答
1187 浏览

java - 混合外观和感觉

到目前为止我有这个

我正在尝试制作主要的外观和感觉 nimbus,但将标题边框更改为 windows。

我的边界是这样的:

有可能吗?如果是有人可以指出我在哪里看?我现在很困惑。:\

谢谢。

0 投票
3 回答
3981 浏览

java - JTree 线型和 Nimbus

我正在使用 Nimbus 的外观和感觉。根据此链接,您应该能够使用您的 JTree 实现 3 种不同的线条样式:

在此处输入图像描述

使用以下代码时:

我的 JTree 看起来像这样:

在此处输入图像描述

它具有“无”样式而不是“水平”样式。知道为什么会这样吗?它与Nmbus有关吗?设置该属性后,我需要调用一些特殊的东西吗?

谢谢

0 投票
4 回答
2296 浏览

java - javax.swing.plaf.synth.SynthContext.getPainter 的 NullPointerException

我工作的一个 Java Swing 程序不断收到下面的异常。它发生在随机时间并且远非可重现。除了未触发按时操作事件之外,它似乎通常不会引起任何问题,但通常即使在此异常之后一切正常。它的发生似乎没有一致性。有人有什么建议吗?我应该提到我们正在使用 nimbus LAF。

0 投票
2 回答
1053 浏览

java - 如何修改 Nimbus L&F 以在按下 Enter 键时激活默认按钮?

在 Nimbus L&F 中,当按下 Enter 键时,如果一个按钮具有焦点,则无论另一个按钮是否已设置为默认值,都会单击该按钮,如下所示:

此外,使用键绑定不起作用:

我什至从未看到“到达这里”消息,但如果我绑定到另一个 KeyStroke,例如“P”,它会按预期运行。因此,似乎 Enter 键在到达此事件处理程序之前已被捕获。

我还尝试修改 UIDefaults:

那也失败了。任何人有任何想法如何做到这一点?

---更新---

进一步调查显示,JButton 的 InputMap 包含 {"pressed Enter": "pressed", "released ENTER": "released"} (以及 SPACE 的绑定)。相关组件的键绑定具有比 RootPane 更高的优先级。有关解决问题的代码,请参见下面的答案。

0 投票
3 回答
505 浏览

java - 如何调试 Swing 中发生的不必要的重绘

在我正在开发的 Swing 应用程序中进行重新绘制时,我遇到了一些奇怪的问题。我发现当我设置某个组件的文本(它只是窗口最底部的状态栏文本标签)时,屏幕非常不同区域的整个表格被告知重新绘制。这会导致一些性能问题,因为每次我设置状态栏文本时,基本上整个窗口都被要求重新绘制。

我一直在 RepaintManager 周围徘徊,试图弄清楚发生了什么,并发现当我尝试设置此文本的标签时,我的整个主 JPanel 都被标记为脏组件。但是,我在调试发生的时间点以及发生这种情况的确切原因时遇到了麻烦。我试图阅读重绘系统,但我无法确定为什么在设置其他文本标签时需要对非重叠表进行重绘。

我使用 Swing Explorer 尝试可视化布局边​​框,以确保事物不会以某种疯狂的方式重叠,并且一切看起来都很好。

我正在寻找一种方法来确定要求 JTable 重新绘制的调用顺序。当我在它的paintComponent() 上添加一个断点并沿着堆栈向上走时,我最终进入了RepaintManager 的paintDirtyRegions() 调用,其中我的整个主JPanel(包含窗口中的所有内容)都位于tmpDirtyComponents 变量中。

当我最初只是设置一个状态文本标签时,谁能解释我的整个 JPanel 是如何被标记为脏的?如果没有,您能否提供一些关于在哪里找到错误的指导?

非常感谢您提供的任何帮助!