我有一个JTextPane
,它具有pane.setEditable(false)
,它强制它具有“灰色”背景颜色。
尝试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);
关于java - 如何在 Java 中更改不可编辑的 JTextPane 的背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34681453/