我不明白Nimbus中交替行着色的工作方式。好像疯了!!!我想在这里清理一下。
对于演示,假设 我们想要一个JTable来交替显示红色和粉红色的行 (我不在乎哪种颜色是第一种)。
在不重新定义 执行自己的“模2”操作的 自定义cellRenderer 且没有从JTable覆盖任何方法的情况下,我想列出在启动应用程序和
仅使用Nimbus属性 获取具有自定义备用行颜色的JTable之间的强制性步骤。
这是我希望遵循的步骤:
这里的源代码:
public class JTableAlternateRowColors implements Runnable {
public static void main(String[] args) {
SwingUtilities.invokeLater(new JTableAlternateRowColors());
}
@Override
public void run() {
try {
UIManager.setLookAndFeel(new NimbusLookAndFeel());
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
UIManager.getDefaults().put("Table.background", Color.RED);
UIManager.getDefaults().put("Table.alternateRowColor", Color.PINK);
final JFrame jFrame = new JFrame("Nimbus alternate row coloring");
jFrame.getContentPane().add(new JScrollPane(new JTable(new String[][] {
{"one","two","three"},
{"one","two","three"},
{"one","two","three"}
}, new String[]{"col1", "col2", "col3"}
)));
jFrame.setSize(400, 300);
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jFrame.setVisible(true);
}
}
这是JDK6代码。有人可以告诉我这里出问题了吗?
根据@kleopatra的评论和整个社区的贡献,这是仅使用Nimbus属性获得替代行着色的一种/方法
公共类JTableAlternateRowColors实现Runnable {
public static void main(String[] args) {
SwingUtilities.invokeLater(new JTableAlternateRowColors());
}
@Override
public void run() {
try {
UIManager.setLookAndFeel(new NimbusLookAndFeel());
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
UIManager.put("Table.background", new ColorUIResource(Color.RED));
UIManager.put("Table.alternateRowColor", Color.PINK);
UIManager.getLookAndFeelDefaults().put("Table:\"Table.cellRenderer\".background", new ColorUIResource(Color.RED));
final JFrame jFrame = new JFrame("Nimbus alternate row coloring");
final JTable jTable = new JTable(new String[][]{
{"one", "two", "three"},
{"one", "two", "three"},
{"one", "two", "three"}
}, new String[]{"col1", "col2", "col3"});
jTable.setFillsViewportHeight(true);
jFrame.getContentPane().add(new JScrollPane(jTable));
jFrame.setSize(400, 300);
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jFrame.setVisible(true);
}
}
似乎是几个错误的干扰…
为了同时更改默认表背景和默认条带化,UIManager的预期配置(不仅是您的,也是我的)(对于所有遵循alternateRow属性的LAF都是相同的):
UIManager.put("Table.background", Color.RED);
UIManager.put("Table.alternateRowColor", Color.PINK);
对Metal和Nimbus均无效
可以在DefaultTableCellRenderer中找到第一个的根本原因:
Color background = unselectedBackground != null
? unselectedBackground
: table.getBackground();
if (background == null || background instanceof javax.swing.plaf.UIResource) {
Color alternateColor = DefaultLookup.getColor(this, ui, "Table.alternateRowColor");
if (alternateColor != null && row % 2 != 0) {
background = alternateColor;
}
}
它的逻辑是歪曲的:仅当 表格 的背景是colorUIResource 时才采用替代颜色,这是一个相当微弱的区别。无论如何,它引导我们进行下一个尝试:
UIManager.put("Table.background", new ColorUIResource(Color.RED));
UIManager.put("Table.alternateRowColor", Color.PINK);
对于金属来说,这看起来不错(除了复选框渲染器的典型问题,但这是另一个错误故事;-),对于Nimbus来说仍然没有运气。
下一步是查找可能相关的Nimbus默认值,并应用(在设置LAF之后!):
UIManager.getLookAndFeelDefaults().put("Table:\"Table.cellRenderer\".background",
new ColorUIResource(Color.RED));
编辑 (按照评论的要求)
JXTable试图完全避开该问题-
它的剥离方法是从HighlighterFactory中检索到的Highlighter。需要通过从lookAndFeelDefaults中删除AlternativeRowColor属性并使用新的键“
UIColorHighlighter.stripingBackground”添加它来使Nimbus变得肮脏
问题内容: 如何为小部件设置样式,以使交替的行具有不同的背景颜色,例如,行1,3,5具有白色背景,行2,4,6具有浅蓝灰色背景? 我也想定一下。 问题答案: 几个月前我也遇到过同样的问题。 从tk文档: 基本上,您将一个标签应用于所有奇数行,将一个标签应用于每个偶数行,然后配置这些标签。 在树视图中创建项目时,请向其中添加标签: 这段代码在中创建了一个元素,并且参数将标签“ oddrow”分配给了
更新时间:2018-09-15 13:45:08 概述 Link Develop开发平台为开发者提供了便捷的在线调试工具,您在开发过程中,可以选择测试设备,对设备的功能进行调试,包括查看设备上报的数据、设置某条属性的值、调用设备服务、获取设备事件等。调试过程中,您可以通过实时日志查看到调试的结果。 在“设备开发”页面点击“在线调试”,或直接选择要调试的设备,在列表中点击“调试”,进入在线调试页面。
本文向大家介绍pygame实现烟雨蒙蒙下彩虹雨,包括了pygame实现烟雨蒙蒙下彩虹雨的使用技巧和注意事项,需要的朋友参考一下 学习了一天的深度学习,略有疲惫,我们用pygame搞个小游戏放松放松吧。今天我们的游戏主体是烟雨蒙蒙下彩虹雨,仿佛置身江南水乡。 游戏描述 我们希望看到江南水乡下起彩虹雨。这里背景是江南水乡,烟雨蒙蒙,雨滴颜色五颜六色,大小不一。 解决思路 烟雨蒙蒙彩虹雨的意思很明确,有
1.本软件为安卓平台软件 2.通过高德地图定位获取当前的地理信息,通过地理信息获取天气信息和PM2.5信息 3.主要功能,当日天气,近期天气预报,当日空气质量,24小时天气预报 .
更新时间:2018-09-14 20:34:55 CloudClient 模块可以让设备直接与 Link Develop 平台直接相连,将设备端的属性/事件上报到 LD 平台上,也可以接收从云端(LD)下发命令和函数。CloudClient 模块直接使用TinyEngine的MQTT本地扩展对象的API。 接口说明 start(config, cb) 启动CloudClient,根据传递的配置参
我建立了一套喷口和螺栓的Storm拓扑,也使用Spring进行依赖注入。 不幸的是,尽管我已经将所有的喷口和螺栓声明为@Components,但没有一个字段自动连接。 然而,在我声明拓扑的地方,Spring运行良好,所有依赖项都被正确注入。 是因为集群吗。submitTopology(“test”,conf,builder.createTopology())将拓扑提交到自动布线不起作用的集群(在本