10
votes

Changer la couleur du texte dans le cordon ()

J'essaie d'ajouter l'accent sur un travail dans un dessin de chaîne im en utilisant Swing.

On m'a conseillé d'utiliser HTML avec le code suivant: P>

Graphics2D g2 = (Graphics2D) g;
g.drawString("this is something I want people to <p color="#00FF00">NOTICE</p>", x, y);


1 commentaires

Vous devez échapper à vos devis


6 Réponses :


3
votes

Si vous créez simplement une étiquette simple en mettant l'accent sur un mot, vous pouvez simplement affecter le code HTML directement sur le jlabel code> comme celui-ci ...

JLabel label = new JLabel("<html>this is something I want people to <span style='color:#00FF00;'>NOTICE</span>");


4 commentaires

Excellent edit. Je viens juste de remarquer à quel point cette chaîne est étrange. Il se lit comme une phrase unique, mais le HTML rend le dernier mot dans un nouveau paragraphe.


C'est certainement intéressant @ Andrewthompson, quelque chose qu'un humain peut comprendre simplement, peut être interprété très différemment par un ordinateur qui repose sur une syntaxe spécifique.


@Andrewthompson Voir ma réponse mise à jour pour pourquoi Avis est sur sa propre ligne


Je viens de mettre à niveau 'bon édition' à "Excellent edit". L'utilisation d'un span il a plus de sens.



4
votes

Utilisez Graphiques.setcolor () pour changer la couleur de tout ce que vous faites. Ou utilisez un jlabel pour définir la couleur sur.


0 commentaires

4
votes

Utilisez un jlabel pour le texte de style. Voir Labendertest pour la façon dont il peut être dessiné à une image et utilisé dans la peinture.

Utilisation de Graphiques / AWT METHODES

La chaîne implique que AVIS doit être vert, mais le reste par défaut (noir). Nous devrions appeler cordon (chaîne) deux fois avec les couleurs des deux parties de la chaîne, compensant la dernière chaîne par la largeur du premier. Pour obtenir la largeur, voir les choses comme FontMetrics ou un glyphvector . Cette réponse utilise un Glyphvector pour obtenir un aperçu des lettres.


4 commentaires

Salut, merci pour cela .. Cela ressemble un peu plus compliqué pour changer la couleur d'un mot. Est-ce le seul moyen de le faire ou existe-t-il des options simples (je viens de commencer juste à jouer avec la balançoire)


Salut Andrew, je bouge de println () à l'interface graphique et trouvez la transition un peu difficile. Quand j'étais asservi, il y avait une option plus simple que je me demandais s'il y avait quelque chose de moins complexe car je n'ai aucune idée de ce qui se passe dans cette liste massive de code que vous m'avez envoyé. Votre commentaire «embaucher quelqu'un» n'était pas seulement non structuré, mais aussi tout à fait en train de mettre pour quelqu'un qui luttait pour apprendre une nouvelle compétence.


Voir la modification. Je recommande également d'essayer des choses plus simples dans Guis. La peinture personnalisée (en particulier des chaînes) est un sujet avancé.


@Davidkroukamp IT peut être effectué sans utiliser de composant de texte de style (voir «AWT EDIT '), mais ce serait beaucoup de farce. Je préfère tirer parti de la capacité de ralentissement de la balançoire pour dessiner du texte de style.



13
votes
  • Comment cela compilait-il: g.Drawstring ("c'est quelque chose que je veux que les gens

    avis p>", x, y); code > Comme '"' est un caractère spécial, nous devons nous échapper avec \ em> p> li>

  • Vous munissez sur graphiques2d mais ne l'utilisez pas (pas pertinent pour le problème, mais peut causer des anomalies). P> LI>

    Il devrait être: p>

    import java.awt.EventQueue;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    
    public class Test {
    
        public Test() {
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            JLabel label = new JLabel("<html>this is something I want people to <p color=\"#00FF00\">NOTICE</p></html>");
    
            // JLabel label = new JLabel("<html>this is something I want people to <font color=\"#00FF00\">NOTICE</font></html>");//will be shown on single line
    
            frame.add(label);
    
            frame.pack();
            frame.setVisible(true);
        }
    
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {
                    new Test();
                }
            });
        }
    }
    

1 commentaires

Bon appel sur les caractères échappés aussi.



2
votes

Vous pouvez utiliser g.setColor (color.blue) avant G.Drawstring (). (Par exemple couleur.blue)


3 commentaires

La chaîne implique avis doit être vert, mais le reste ..default. Nous devrions appeler cordon de cordon deux fois avec les deux couleurs, compensant la dernière chaîne par la largeur du premier.


vous avez raison. Comme je le sais, vous n'avez qu'une solution que de problèmes.


Il inverse la couleur de l'image d'origine et ajoutez du texte en noir. Une autre configuration doit-elle être effectuée pour l'utiliser?



-2
votes

Vous pouvez ajouter g.setcolor (couleur de couleur); puis écrivez la chaîne avec g.Drawstring () peut-être


1 commentaires

rien de nouveau à au moins une réponse antérieure, est là :-)