2013-10-17 7 views
2

J'ai déjà cherché partout sur le net, et essayé plusieurs choses, pour essayer de définir la couleur de fond par défaut pour JTextPane, mais il montre toujours la couleur blanche par défaut. J'essaie de simuler la sortie de la console, et j'ai besoin de l'arrière-plan pour être noir, même s'il n'y a pas de texte.Comment définir la couleur d'arrière-plan par défaut pour JTextPane

On dirait setCharacterAttributes() et setParagraphAttributes() ne traitent que tout texte inséré, mais le reste de l'arrière-plan est toujours le blanc par défaut.

J'ai vu quelque chose à propos de peut-être un bug lié à la définition de la couleur de fond.

Comment puis-je le faire?

C'est du texte brut, pas de HTML.

Merci!

MISE À JOUR:

j'ai finalement trouvé quelque chose qui fonctionnait.

L'utilisation setBackground (Color.BLACK) ne ferait que mettre l'arrière-plan en vertu de tout texte inséré, mais le reste de l'arrière-plan de JTextPane était encore par défaut blanc, sur ma machine Windows.

J'ai commencé à chercher à changer l'UIDefault et c'est ce que j'ai fait! Voici ce que je:

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

Et quand il commence, sans texte, l'ensemble JTextPane est le chemin maintenant noir je veux et tout texte inséré est la façon dont je avais besoin d'être.

Tout le reste j'ai essayé de laisser le reste du JTextPane blanc, et j'ai essayé beaucoup de "solutions" différentes de .

Merci pour vos réponses.

+2

Je n'ai jamais eu de problème lors de l'utilisation de JDK4/5/6/7 sous Windows 7. Publiez votre SSCCE qui montre le problème. – camickr

+0

Avez-vous essayé d'utiliser setBackground? – MadProgrammer

Répondre

4

Essayez ce SSCCE. Il démontre la définition de la couleur d'arrière-plan sur un 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; 
     } 
    }); 
    } 
} 
Questions connexes