我已经在网上搜索过,尝试了几件事,尝试设置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的其余部分白色,我试过了 许多不同的“解决方案”。
感谢您的回复。
答案 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);