问题标签 [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.
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(),如下所示:
java - 您如何更改 Nimbus 外观和感觉中的边距
我正在尝试使用 Nimbus 外观和感觉,我不能简单地将其插入以替换其他外观,因为它在每个组件周围添加了一些外部填充。
所以,我想删除这个填充。这是可以更改的默认值列表,但是以下代码没有任何更改。
其他值按预期工作。
如何删除此填充?
编辑
我相信内容边距是指内部填充。
编辑
查看源代码,外部填充似乎是硬编码的。我相信添加它是为了允许焦点选择属性。
这应该被认为是一个错误吗?没有其他 L&F 这样做,并且有了这个额外的填充,就不可能重用相同的布局(因为以前的布局都假设没有填充)。
java - Java:更改 UI 字体 (Nimbus) 不起作用!
我指的是这个 Nimbus 参考。
我尝试将全局字体设置为稍大:
...仅适用于菜单,但不适用于其他(按钮、标签)。
我试图改变标签和按钮字体
但字体仍然存在。
唯一对我有用的是派生字体:
但这不是一个选项,因为这必须手动为每个 元素完成。
请注意,为 UIManager 派生字体也不起作用:
我在 Linux 和 Windows 下测试了所有内容:相同的行为。
我只是无法理解 API 怎么会如此混乱。如果一个方法被称为 setFont(..) 那么我希望它设置字体。如果此方法在任何可能的情况下都无法设置字体,则应弃用它。
编辑:
这个问题不仅适用于 Nimbus,也适用于默认的 LAF。
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 外观和感觉运行。
java - 为 Nimbus 外观设计简单的单元格渲染器
我有一个简单的单元格渲染器,它由几个JLabel
s (渲染器本身扩展JPanel
)组成,我试图让它在 Nimbus 的外观和感觉中合理地渲染。基本上正在发生的事情是在较浅的行中(因为 Nimbus 具有备用行着色),我的特定单元格渲染器正在使用表格背景颜色(比较浅和较暗的行颜色都暗得多)。在我的渲染器中,我这样做:
如果我将这整个代码块注释掉,那么我所有的行都是较暗的行颜色(不是表格背景,但也不是替代颜色)。我不确定我什至不明白会发生什么!上面的代码片段是如何产生具有不同背景颜色的单元格的?table.getBackground
我的方法调用之间的颜色是否发生变化?
我试过使用这段代码:
这是在DefaultTableCellRenderer
课堂上。而且它似乎根本没有任何影响。有没有人使用 Nimbus 定制单元格渲染器?
编辑:如果有人感兴趣,结果证明这是Scala表格单元格渲染器的问题,因为我实际上使用的是 Scala,而不是 Java。下面接受的答案在 Java 程序中工作得很好。此处提交的单独问题。
scala - 使用 Nimbus 和 Scala 的表格单元渲染器
我问了这个问题,关于我在使用 Nimbus 外观和感觉的单元格渲染器中遇到的问题,结果证明这个问题可能与 Scala 有关。基本上,我有一个扩展的单元格渲染器Panel
(而不是DefaultTableCellRenderer
),它的行为很奇怪:它没有正确渲染备用行颜色,而等效的 Java 程序表现得很好。如果有人感兴趣,这里有一些Scala代码可以运行:
如果您运行代码,您将看到问题所在(这与Panel
-renderer 中的备用行着色无法正常工作有关)。如果您运行 Java 等效程序,您将看到它正常工作。任何人都知道为什么 Scala 代码不能按预期工作?这是等效的Java代码:
java - JTabbedPane:选项卡左侧的图标
你好,我正在使用 nimbus 外观和感觉,并有一个带有图标和文本的选项卡窗格。现在图标出现在文本的右侧,而我想将它放在左侧。
我还想在图标和文本之间添加一些间距。
谢谢!
java - 设置 JTabbedPane 的背景颜色
我正在使用 Nimbus 外观。我需要更改 JTabbedPane 中选项卡的背景颜色和前景色,但 JTabbedPane 中没有设置颜色。我尝试了 setForeground()、setForegroundAt()、setBackground() 和 setBackgroundAt() 方法,但它不起作用。这是我的代码
code>}
java - Swing ListCellRenderer 中的背景颜色错误
我目前正在尝试ListCellRenderer
为JList
. 不幸的是,几乎所有的例子都只是简单地使用DefaultListCellRenderer
as 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:希望运行的示例代码。
奇怪的是,如果我这样做
它神奇地起作用。所以也许我要去那里可能DerivedColor
有nimbusLightBackground
麻烦?
swing - 如何在运行时选择 jre?
我有一个 Swing 应用程序,我想用Nimbus look'n'feel运行它。我有 JRE 的最新更新,我知道如何使用UIManager类设置我的应用程序以使用 Nimbus 外观,但我希望我的应用程序在运行时选择正确的 JRE 以使用 Nimbus。怎么做?
我正在使用 Netbeans。