Maison >Java >javaDidacticiel >Pourquoi le comportement de mon JButton change-t-il de manière inattendue lors du redimensionnement de ma fenêtre Java Swing ?
Problème :
L'utilisateur décrit un problème dans son Application Java Swing où le comportement d'un JButton change de manière inattendue lorsque la fenêtre est redimensionnée. Plus précisément, le bouton START/STOP rétablit son texte en START après avoir été cliqué et le bouton BALL COLOR ne met pas à jour sa couleur et son texte comme prévu.
Solution :
La solution fournie répond à plusieurs problèmes potentiels qui pourraient contribuer au comportement observé :
Le code original appelle inutilement revalidate() et repaint() après avoir défini la couleur d'arrière-plan des boutons. Ces méthodes ne sont requises que si la disposition ou l'apparence du composant doit être ajustée dynamiquement.
Color.white ne peut pas être plus clair et Color.black ne peut pas être plus sombre. De plus, l'exemple utilise Color.darkGray.darker() qui donne Color.black. Pour les couleurs qui présentent à la fois des variations claires et foncées, utilisez Color.brighter() ou Color.darker() de manière appropriée.
Au lieu d'utiliser un tableau statique de couleurs, une file d'attente est utilisée pour simplifier la gestion des couleurs et permettre de parcourir les couleurs.
Le composant DrawingArea appelle correctement repaint() lorsque sa couleur d'arrière-plan ou de premier plan est mise à jour.
Le bouton START/STOP modifie correctement son texte en fonction de l'état de fonctionnement de la minuterie. Le bouton BALL COLOR met à jour sa couleur d'arrière-plan pour correspondre à la couleur actuellement sélectionnée.
Voici une comparaison de l'original et de la version révisée. code :
Original :
startStopButton.setBorder(BorderFactory.createLineBorder( Color.WHITE, 4, true)); buttonPanel.add(startStopButton); colourButton.setBorder(BorderFactory.createLineBorder( Color.WHITE, 2, true)); buttonPanel.add(colourButton);
Révisé :
startStopButton.setBorder(BorderFactory.createLineBorder(Color.gray, 4)); buttonPanel.add(startStopButton); colourButton.setBorder(BorderFactory.createLineBorder(Color.gray, 4)); buttonPanel.add(colourButton);
En résolvant ces problèmes, la solution fournie vise à stabiliser le comportement de l'application et à éliminer les comportements inattendus lors du redimensionnement de la fenêtre.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!