2013-10-17 64 views
2

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

我试图模拟控制台输出,并且我需要整个背景为 为黑色,即使没有文字。

看起来像setCharacterAttributes()setParagraphAttributes()只处理 任何插入的文本,但其余的背景仍然是默认的白色。

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

我该怎么办?

这是纯文本,不是任何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

我从来没有在Windows 7上使用JDK4/5/6/7的问题。发布您的SSCCE,演示问题。 – camickr

+0

您是否尝试过使用setBackground? – MadProgrammer

回答

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; 
     } 
    }); 
    } 
} 
相关问题