我有一个JTextPane
,pane.setEditable(false)
迫使它有一个灰色的'背景颜色。
在尝试setBackground(Color.WHITE)
之后(我没有工作),我试着在网上寻找答案,但还没找到答案。
有人可以帮我解决这个问题吗?
答案 0 :(得分:3)
请注意,对于像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);
答案 1 :(得分:2)
实际上试试这个:
UIManager.put("TextPane.disabledBackground", Color.WHITE);
我认为它应该是TextPane.disabledBackground
,如果没有尝试:TextPane.inactiveBackground
要改变背景颜色,我相信: 在窗格上尝试setDisabledTextColor。
答案 2 :(得分:1)
我发现它是什么 - 这是因为我有pane.setOpaque(false)
,我无法在不首先删除它或将其更改为true的情况下更改背景颜色。
setBackground(Color.white)
改变了这一点。