如何为JTextPane设置默认背景颜色

时间:2013-10-17 19:10:06

标签: java swing jtextpane

我已经在网上搜索过,尝试了几件事,尝试设置JTextPane的默认背景颜色,但仍显示默认的白色。

我正在尝试模拟控制台输出,我需要整个背景 即使没有文字也是黑色的。

似乎setCharacterAttributes()setParagraphAttributes()只能处理 任何插入的文本,但背景的其余部分仍然是默认的白色。

我看到了一些与设置背景颜色有关的错误。

我该怎么做?

这是纯文本,而不是任何HTML。

谢谢!

更新:

我终于找到了有用的东西。

使用setBackground(Color.BLACK)只会设置背景 在任何插入的文本下,但JTextPane的其余部分仍然是 我的Windows机器上的默认白色。

我开始考虑改变UIDefault,并且做到了! 这是我使用的:

UIDefaults defs = UIManager.getDefaults();
defs.put("TextPane.background", new ColorUIResource(Color.BLACK));
defs.put("TextPane.inactiveBackground", new ColorUIResource(Color.BLACK));

当它开始时,没有文字,整个JTextPane现在都是我想要的黑色 任何插入的文字都是我需要它的方式。

我试过的其他所有东西都留下了JTextPane的其余部分白色,我试过了 许多不同的“解决方案”。

感谢您的回复。

2 个答案:

答案 0 :(得分:4)

试试这个SSCCE。它演示了如何在JTextPane上设置背景颜色。

import java.awt.Component;
import java.awt.Container;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JTextPane;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

/**
 * http://stackoverflow.com/questions/19435181/how-to-set-default-background-color-for-jtextpane
 */
public class Q19435181 {
  public static void main(String... args) {
    SwingUtilities.invokeLater(new Runnable() {
      @Override
      public void run() {
        JFrame frame = new JFrame("Example setting background color on JTextPane");
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        Container pane = frame.getContentPane();
        pane.add(blackJTextPane());
        frame.setSize(800, 600);
        frame.setVisible(true);
      }

      private Component blackJTextPane() {
        JTextPane pane = new JTextPane();
        pane.setBackground(Color.BLACK);
        pane.setForeground(Color.WHITE);
        pane.setText("Here is example text");
        return pane;
      }
    });
  }
}

答案 1 :(得分:0)

除了使用系统默认值外,还可以针对每个特定项目执行此操作。 这是我正在使用的代码,主要基于您的注释:

        Color bgColor = Color.BLACK;
        UIDefaults defaults = new UIDefaults();
        defaults.put("TextPane.background", new ColorUIResource(bgColor));
        defaults.put("TextPane[Enabled].backgroundPainter", bgColor);
        out.putClientProperty("Nimbus.Overrides", defaults);
        out.putClientProperty("Nimbus.Overrides.InheritDefaults", true);
        out.setBackground(bgColor);