2013-10-17 104 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; 
     } 
    }); 
    } 
} 
相關問題