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

java - 具有透明文本字段的 Java Nimbus LAF

我有一个应用程序在几个地方使用禁用的 JTextFields,这些地方旨在透明 - 允许背景显示而不是文本字段的正常背景。

运行新的 Nimbus LAF 时,这些字段是不透明的(尽管设置了 setOpaque(false)),并且我的 UI 已损坏。就好像 LAF 忽略了 opaque 属性。明确地设置背景颜色在几个地方都很困难,并且由于背景图像实际上不起作用,因此不是最佳的 - 它仍然在顶部绘制它的 LAF 默认背景,留下类似边框的外观(下面的启动屏幕有背景明确设置为匹配图像)。

关于如何让 Nimbus 不为 JTextField 绘制背景的任何想法?

注意:我需要一个 JTextField,而不是 JLabel,因为我需要线程安全的 setText() 和包装能力。

注意:我的后备立场是继续使用系统 LAF,但 Nimbus 看起来确实要好得多。

请参阅下面的示例图像。


结论

这种行为令人惊讶是由于对 setOpaque() 的作用的误解——来自 Nimbus 错误报告:

这是 Swing 的原始设计以及多年来一直令人困惑的问题。问题是 setOpaque(false) 在退出 LAF 时产生了副作用,即隐藏背景,这并不是它真正的用途。应该说组件有透明的部分,swing 应该在它后面绘制父组件。

不幸的是,Nimbus 组件似乎也不支持 setBackground(null),否则这将是停止背景绘制的推荐方法。设置一个完全透明的背景对我来说似乎不直观。

在我看来,setOpaque()/isOpaque() 是一个错误的公共 API 选择,应该只是:

我这样说是因为 isOpaque()==true 是与 Swing 的合同,组件子类将负责绘制它的整个背景——这意味着父级可以根据需要跳过绘制该区域(这是一个重要的性能增强)。外部的东西不能直接(合法地)改变这个契约,它的实现可以被编码到组件中。

所以组件的不透明度不应该使用 setOpaque() 设置。相反,像 setBackground(null) 这样的东西应该会导致许多组件“没有背景”,因此变得不完全不透明。例如,在理想世界中,大多数组件应该有一个 isOpaque(),如下所示:


例子

替代文字

0 投票
2 回答
2993 浏览

java - 您如何更改 Nimbus 外观和感觉中的边距

我正在尝试使用 Nimbus 外观和感觉,我不能简单地将其插入以替换其他外观,因为它在每个组件周围添加了一些外部填充。

所以,我想删除这个填充。这是可以更改的默认值列表,但是以下代码没有任何更改。

其他值按预期工作。

如何删除此填充?

编辑

我相信内容边距是指内部填充。

编辑

查看源代码,外部填充似乎是硬编码的。我相信添加它是为了允许焦点选择属性。

这应该被认为是一个错误吗?没有其他 L&F 这样做,并且有了这个额外的填充,就不可能重用相同的布局(因为以前的布局都假设没有填充)。

0 投票
6 回答
9912 浏览

java - Java:更改 UI 字体 (Nimbus) 不起作用!

我指的是这个 Nimbus 参考

我尝试将全局字体设置为稍大:

...仅适用于菜单,但不适用于其他(按钮、标签)。

我试图改变标签和按钮字体

但字体仍然存在

唯一对我有用的是派生字体:

但这不是一个选项,因为这必须手动为每个 元素完成。

请注意,为 UIManager 派生字体也不起作用

我在 Linux 和 Windows 下测试了所有内容:相同的行为。

我只是无法理解 API 怎么会如此混乱。如果一个方法被称为 setFont(..) 那么我希望它设置字体。如果此方法在任何可能的情况下都无法设置字体,则应弃用它。

编辑:
这个问题不仅适用于 Nimbus,也适用于默认的 LAF。

0 投票
6 回答
3034 浏览

java - Leopard 上各种 com.sun.* 包的 Java 源代码在哪里?

我正在家里使用我的 MacBook,运行 Leopard,安装了来自 Apple 的最新 JDK 1.6。在 IDE 中,我想浏览 com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel 的源代码,但 IDE 找不到。我想浏览的另一个示例是 com.sun.java.swing.plaf.nimbus.ButtonPainter。

为了浏览 com.sun,我需要将什么 JAR 或 ZIP 添加到我的 IDEA 项目中。。雨云。IDE 中的类我只对 Leopard 感兴趣,因为它在带有 Sun 的 JDK 的 Windows 上运行良好。

我知道 Nimbus 类可用,因为我的应用程序使用 Nimbus 外观和感觉运行。

0 投票
1 回答
3134 浏览

java - 为 Nimbus 外观设计简单的单元格渲染器

我有一个简单的单元格渲染器,它由几个JLabels (渲染器本身扩展JPanel)组成,我试图让它在 Nimbus 的外观和感觉中合理地渲染。基本上正在发生的事情是在较浅的行中(因为 Nimbus 具有备用行着色),我的特定单元格渲染器正在使用表格背景颜色(比较浅和较暗的颜色都暗得多)。在我的渲染器中,我这样做:

如果我将这整个代码块注释掉,那么我所有的行都是较暗的颜色(不是表格背景,但也不是替代颜色)。我不确定我什至不明白会发生什么!上面的代码片段是如何产生具有不同背景颜色的单元格的?table.getBackground我的方法调用之间的颜色是否发生变化?

我试过使用这段代码:

这是在DefaultTableCellRenderer课堂上。而且它似乎根本没有任何影响。有没有人使用 Nimbus 定制单元格渲染器?

编辑:如果有人感兴趣,结果证明这是Scala表格单元格渲染器的问题,因为我实际上使用的是 Scala,而不是 Java。下面接受的答案在 Java 程序中工作得很好。此处提交的单独问题。

0 投票
1 回答
2815 浏览

scala - 使用 Nimbus 和 Scala 的表格单元渲染器

我问了这个问题,关于我在使用 Nimbus 外观和感觉的单元格渲染器中遇到的问题,结果证明这个问题可能与 Scala 有关。基本上,我有一个扩展的单元格渲染器Panel(而不是DefaultTableCellRenderer),它的行为很奇怪:它没有正确渲染备用行颜色,而等效的 Java 程序表现得很好。如果有人感兴趣,这里有一些Scala代码可以运行:

如果您运行代码,您将看到问题所在(这与Panel-renderer 中的备用行着色无法正常工作有关)。如果您运行 Java 等效程序,您将看到它正常工作。任何人都知道为什么 Scala 代码不能按预期工作?这是等效的Java代码:

0 投票
1 回答
12388 浏览

java - JTabbedPane:选项卡左侧的图标

你好,我正在使用 nimbus 外观和感觉,并有一个带有图标和文本的选项卡窗格。现在图标出现在文本的右侧,而我想将它放在左侧。

我还想在图标和文本之间添加一些间距。

谢谢!

0 投票
6 回答
13811 浏览

java - 设置 JTabbedPane 的背景颜色

我正在使用 Nimbus 外观。我需要更改 JTabbedPane 中选项卡的背景颜色和前景色,但 JTabbedPane 中没有设置颜色。我尝试了 setForeground()、setForegroundAt()、setBackground() 和 setBackgroundAt() 方法,但它不起作用。这是我的代码

code>

}

0 投票
1 回答
2718 浏览

java - Swing ListCellRenderer 中的背景颜色错误

我目前正在尝试ListCellRendererJList. 不幸的是,几乎所有的例子都只是简单地使用DefaultListCellRendereras aJLabel就可以了。但是,我需要一个JPanel(因为我需要显示更多信息,而不仅仅是一个图标和一行文本)。

现在我遇到了背景颜色的问题,特别是 Nimbus PLAF。似乎我得到的背景颜色list.getBackground()是白色,但涂成灰色(或蓝灰色)。输出我得到的颜色会产生以下结果:

背景颜色:DerivedColor(color=255,255,255 parent=nimbusLightBackground offsets=0.0,0.0,0.0,0 pColor=255,255,255

但是,可以看出,这不是画出来的。

替代文字

它显然适用于所选项目。目前,我什至将我放入JPanel单元格渲染器返回的每个组件都设置为不透明,并使用正确的前景色和背景色——但无济于事。

有什么想法我在这里做错了吗?

ETA:希望运行的示例代码。

奇怪的是,如果我这样做

它神奇地起作用。所以也许我要去那里可能DerivedColornimbusLightBackground麻烦?

0 投票
3 回答
786 浏览

swing - 如何在运行时选择 jre?

我有一个 Swing 应用程序,我想用Nimbus look'n'feel运行它。我有 JRE 的最新更新,我知道如何使用UIManager类设置我的应用程序以使用 Nimbus 外观,但我希望我的应用程序在运行时选择正确的 JRE 以使用 Nimbus。怎么做?

我正在使用 Netbeans。