4

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

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

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

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

我该怎么做?

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

谢谢!

更新:

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

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

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

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

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

我尝试的所有其他方法都将 JTextPane 的其余部分留白,并且我尝试了许多不同的“解决方案”。

感谢您的回复。

4

2 回答 2

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;
      }
    });
  }
}
于 2013-10-17T19:26:34.460 回答
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);

于 2019-06-26T13:48:11.687 回答