9
votes

Comment définir une couleur d'arrière-plan personnalisée sur une ligne dans un jtextpane

Je voudrais alterner entre gris et blanc comme de l'arrière-plan d'une ligne de mon jtextpane à la suivante. J'ai essayé de le faire en surchargeant la méthode de la peinture () et en dessinant le fond manuellement en fonction de la hauteur des composants une taille de police mais je n'ai pas réussi.

Toute astuce?


2 commentaires

Qu'entendez-vous par «une ligne»? Severbackground () ne fonctionne pas si vous alternez la couleur que vous utilisez?


Votre textpane est-elle modifiable? I.e. Voulez-vous que les arrière-plans changent si des lignes sont ajoutées / supprimées?


5 Réponses :


0
votes
JTextField someField = new JTextField();
someField.setBackground(Color.GREY );

3 commentaires

Désolé je voulais dire jtextpane pas jtextfield ... j'ai corrigé la question.


Malheureusement, celui-ci changera la couleur totale JTextpane, et pas seulement l'une de ses lignes.


@RiDuidel, oui, mais la façon dont la question a été formulée à l'origine.



1
votes

Voici Un exemple d'une solution possible.

Pour l'expliquer un peu, JTextpane est un éditeur de document stylé, et comme tel, permet de changer styleddocument , c'est-à-dire un document qui inclut des informations de style, telles que la couleur d'arrière-plan pour une ligne donnée.


0 commentaires

0
votes

J'ai essayé de le faire en surchargeant la méthode de la peinture () et dessinez le fond manuellement en fonction de la hauteur des composants une taille de police mais je n'ai pas réussi.

semble raisonnable. Assurez-vous de faire le volet de texte non opaque.

Ensuite, le code de base serait:

  1. Peignez votre arrière-plan alternatif basé sur la région du clip
  2. invoquer super.paincomponent () de sorte que le texte est peint au-dessus de l'arrière-plan.

    Si vous avez besoin de plus d'aide, postez le SSCCE démontrer le problème.


0 commentaires

2
votes

Vous pouvez utiliser la ligne surligneur ( ici ou ici ), écrit par @vonc, en réponse à Question .

Afin de mettre en évidence des lignes alternatives, vous pouvez l'utiliser comme suit: xxx

voici ce que VONC est myHighLighter : < / p> xxx


0 commentaires

-1
votes

JTextpane prendra un document HTML comme texte. Avez-vous envisagé d'ajouter votre texte au jtextpane via un document HTML?

JTextPane pane = new JTextPane();
pane.setContentType("text/html");

String text = /*some html table or set of divs for formatting */

pane.setText(text);

myJFrame.add(pane);


0 commentaires