java - 如何在 Java 中更改不可编辑的 JTextPane 的背景颜色?

标签 java swing background jtextpane

我有一个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/

相关文章:

java - 在 JLabel HTML 中使用 BufferedImage?

java - 在 JApplet 中正确使用事件调度线程?

ios - 如何在应用程序处于后台时同步位置

CSS背景全长但不是全宽

java - YAJSW窗口服务未启动

java - 获取给定 HTML 元素 id 的 HTML 属性列表

java - 如何获得焦点所有者?

java - Mockito 默认行为和具有相同返回类型的方法的自定义行为

java - 如何动态添加 JLabels 到 JPanel?

iphone - iOS UIButton 如何制作这样漂亮的按钮?