如何更改 Java 中不可编辑的 JTextPane 的背景颜色?
How can I change the background color of an uneditable JTextPane in Java?
我有一个 JTextPane
pane.setEditable(false)
强制它具有 'greyed-out' 背景颜色。
在尝试 setBackground(Color.WHITE)
(无效)之后,我尝试在网上寻找答案,但还没有找到答案。
谁能帮我解决这个问题?
实际试试这个:
UIManager.put("TextPane.disabledBackground", Color.WHITE);
我觉得应该是TextPane.disabledBackground
,不行就试试:TextPane.inactiveBackground
要更改文本背景颜色,我认为:
在窗格上尝试 setDisabledTextColor。
我发现它是什么 - 那是因为我有 pane.setOpaque(false)
,如果不先删除它或将其更改为 true,我就无法更改背景颜色。
setBackground(Color.white)
修改后有效。
请注意,对于某些不考虑背景的类似 Nimbus 的外观和感觉 属性,您可以使用此代码:
private static class Painter extends javax.swing.plaf.nimbus.AbstractRegionPainter {
private final Color color;
private Painter(Color color) {
this.color = color;
}
@Override
protected AbstractRegionPainter.PaintContext getPaintContext() {
return new AbstractRegionPainter.PaintContext(null, null, false);
}
@Override
protected void doPaint(Graphics2D g, JComponent c,
int width, int height, Object[] extendedCacheKeys) {
g.setColor(c.isEnabled() ? c.getBackground() : color);
g.fillRect(0, 0, width, height);
}
}
这为背景定义了一个新的自定义画家。对于 Nimbus,以这种方式将其应用到您的 JTextPane jtp
:
UIDefaults defaults = UIManager.getLookAndFeelDefaults();
Painter painter = new Painter(color);
String key = "TextPane[Disabled].backgroundPainter";
defaults.put(key, painter);
jtp.putClientProperty("Nimbus.Overrides", defaults);
jtp.putClientProperty("Nimbus.Overrides.InheritDefaults", false);
我有一个 JTextPane
pane.setEditable(false)
强制它具有 'greyed-out' 背景颜色。
在尝试 setBackground(Color.WHITE)
(无效)之后,我尝试在网上寻找答案,但还没有找到答案。
谁能帮我解决这个问题?
实际试试这个:
UIManager.put("TextPane.disabledBackground", Color.WHITE);
我觉得应该是TextPane.disabledBackground
,不行就试试:TextPane.inactiveBackground
要更改文本背景颜色,我认为: 在窗格上尝试 setDisabledTextColor。
我发现它是什么 - 那是因为我有 pane.setOpaque(false)
,如果不先删除它或将其更改为 true,我就无法更改背景颜色。
setBackground(Color.white)
修改后有效。
请注意,对于某些不考虑背景的类似 Nimbus 的外观和感觉 属性,您可以使用此代码:
private static class Painter extends javax.swing.plaf.nimbus.AbstractRegionPainter {
private final Color color;
private Painter(Color color) {
this.color = color;
}
@Override
protected AbstractRegionPainter.PaintContext getPaintContext() {
return new AbstractRegionPainter.PaintContext(null, null, false);
}
@Override
protected void doPaint(Graphics2D g, JComponent c,
int width, int height, Object[] extendedCacheKeys) {
g.setColor(c.isEnabled() ? c.getBackground() : color);
g.fillRect(0, 0, width, height);
}
}
这为背景定义了一个新的自定义画家。对于 Nimbus,以这种方式将其应用到您的 JTextPane jtp
:
UIDefaults defaults = UIManager.getLookAndFeelDefaults();
Painter painter = new Painter(color);
String key = "TextPane[Disabled].backgroundPainter";
defaults.put(key, painter);
jtp.putClientProperty("Nimbus.Overrides", defaults);
jtp.putClientProperty("Nimbus.Overrides.InheritDefaults", false);