2009-08-30 8 views
0

J'essaie de remplacer le comportement par défaut du bouton java et d'essayer d'ajouter une étiquette supplémentaire à un bouton. Je suis nouveau sur l'interface graphique Java et je pensais que la méthode de peinture prioritaire résoudrait mon problème, mais quand je fais cela et dessine une étiquette supplémentaire dans la méthode de peinture de bouton, ça va bien, mais mon label disparaît.Override java.awt.Button

J'ai essayé de trouver des tutoriels sur la façon de surcharger java.awt.Component, mais je n'ai rien trouvé. Merci.

Répondre

0

Voici a page describing how painting works in awt qui pourrait aider. Cependant, si tout ce que vous cherchez est d'ajouter une étiquette supplémentaire au bouton, vous devriez envisager de changer le sous-classement en composition. C'est beaucoup plus sûr. Votre classe composite peut étendre Component et définir sa propre méthode de peinture.

class MyButton extends Component { 
    private Button button; 
    private Label label; 

    public MyButton(String label, String buttonLabel) { 
     label = new Label(label); 
     button = new Button(buttonLabel); 
    } 

    public paint(Graphics g) { 
     label.paint(g); 
     button.paint(g); 
    } 

    ... 
} 
0

Vous ne pouvez pas vraiment remplacer « peinture » dans les contrôles AWT de base et ont encore à travailler à droite, parce que Button, par exemple, une grande partie du comportement de la peinture se fait par les classes par les pairs (un WButton en Windows, par exemple). J'ai écrit beaucoup de contrôles AWT pour la version JVM OS/2 en 1.1.x, et je ne peux pas m'imaginer que cela fonctionne comme vous le voulez, à moins que les choses aient changé de façon spectaculaire avec l'AWT (improbable). Si vous voulez vraiment contrôler la peinture dans des situations comme celle-ci, vous devez soit rouler la vôtre, soit utiliser un bouton Swing, puis explorer le "composant UI" (l'objet délégué responsable de la peinture du contrôle, entre autres). une partie du "look and feel" utilisé à l'époque). Fondamentalement, les contrôles AWT sont 'natifs', c'est-à-dire qu'il y a un vrai bouton Windows et un code Java autour de celui-ci. Les contrôles Swing sont 'pure Java'; mais déléguer une grande partie de leur comportement et la quasi-totalité de leur apparence aux contrôleurs d'interface utilisateur dans les paquets look-and-feel.

+0

bien, alors vous serez surpris, parce que cela fonctionne bien pour moi =) –

+0

Je voulais dire, cela ne fonctionnera pas comme vous le souhaitez dans toutes les situations. Dans le cas de l'auteur d'origine, par exemple, ce qui se passe probablement, c'est que le contrôle natif se peint lui-même en réponse à l'événement bouton de la souris dans Windows - et ignore complètement tout ce qui se passe du côté java. – M1EK

Questions connexes