【发布时间】:2012-08-25 03:51:20
【问题描述】:
我有以下非常简单的代码,用于创建 JLabel 并使用 MigLayout 布局管理器将其添加到面板:
MigLayout layout = new MigLayout();
JPanel panel = new JPanel(layout);
panel.setBackground(Color.GRAY);
JLabel label = new JLabel("<html><h3>Some Text</h3></html>");
panel.add(label, "growx,w 220!,h 40!,top");
这应该将标签呈现为透明,以便面板背景在标签后面可见 - 这是我们想要的行为。
但在某些 PC 上,标签以纯白色背景呈现 - 即好像已设置 opaque=true。
奇怪的是,如果标签文本不是使用 html 格式化,这不是问题。
JLabel label = new JLabel("Some text");
我们使用 BasicLabelUI 作为 UI 委托,所以我希望在这里看到标准的绘画行为。
这是在 Windows XP 中使用 jre 1.6.0_30 运行的。有没有人见过这样的东西?会不会是与不同机器上运行的图形硬件之间的差异有关?
【问题讨论】:
-
label.setOpaque(true);和label.setBackground(Color.RED);将帮助您查看JLabels边界到JPanel -
如需尽快获得更好的帮助,请发帖SSCCE。
-
我无法使用
GridLayout/GridBagLayout重现它,因此缺少 SSCCE,我对原因的最佳猜测是 a) 其余代码 b) MigLayout 或 c) JRE。 -
感谢您尝试安德鲁。在最简单的情况下,它并没有比我发布的更多 - JFrame 包含 JPanel 包含 JLabel。在表格单元格中渲染 JLabel 和渲染 JButton 时也是如此。都很奇怪!
-
@RichardP 请接受答案?