7
votes

Comment faire des travaux d'arrière-plan dans la personnalisation JCOMPONENT?

Dans l'exemple suivant, j'ai un jcommonent personnalisé étant dessiné sur fond vert, mais il n'apparaît pas. Pourquoi cela se produit-il? XXX


0 commentaires

3 Réponses :


12
votes

JCOMPONENT ne peint pas son fond. Vous pouvez soit peindre vous-même, soit utiliser JPanel qui peint son fond


1 commentaires

+1 Ceci est correct et concis, mais SUZAN a également oublié de définir la couleur avant d'appeler graphiques2d.draw () . La couleur sera donc imprévisible. Et parce qu'elle a déclaré que le jcomponent soit opaque, elle doit peindre le fond elle-même ou s'étendre d'un composant, comme JPanel, qui le fait.



1
votes

Comme je me souviens que cela ne supporte que cette propriété Backgroun, mais ne le dessine pas en fait. Pum Utilisez G.Fillrect (ou Fillellipse s'il s'agit d'ellipse) pour créer votre propre arrière-plan.


0 commentaires

2
votes

Il y a plusieurs problèmes dans votre méthode de peinture ().

  • Vous n'appelez jamais graphiques.setcolor () code>, donc la couleur que vous peignez est complètement inconnue. Li>
  • Vous avez déclaré que ce composant sera opaque, ce qui signifie que vous êtes prometteur em> pour peindre vous-même le fond. LI> ul>

    Vous voulez quelque chose de plus comme ceci: P>

        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2 = (Graphics2D) g;
            g2.setColor(getForeground());
            g2.draw(ellipse);
        }
    


1 commentaires

Je pense que vous avez une erreur aussi: si ce n'est pas correct pour commencer à remplir à partir de getx () et gety () . Ces valeurs doivent être des zéros.