Mettre l'onglet à l'avant dans JTabbedPane
-
22-07-2019 - |
Question
Lorsque j'utilise setSelectedComponent
ou setSelectedIndex
sur un objet JTabbedPane
, le panneau s'affiche toujours dans mon interface utilisateur. Cependant, l'onglet associé au panneau reste parfois masqué. En d'autres termes, l'onglet ne fait pas défiler jusqu'à une partie visible du volet à onglets.
Comment puis-je résoudre ce problème? J'ai essayé le fromage, sélectionnez un index, puis sélectionnez l'index souhaité, ainsi que plusieurs autres options plus élégantes, mais arrrrgh!
Aidez-moi si vous le pouvez.
Merci, Todd
La solution
Je pense que votre appel n'est pas terminé à l'EDT. Enveloppez-le avec SwingUtilities.invokeLater
Autres conseils
Voici un modèle que vous pouvez utiliser si vous avez une méthode qui modifie les composants swing, ou leurs modèles, et doit donc être appelée sur l'EDT, mais peut être appelée à partir d'un thread en arrière-plan. Cela garantit que func toujours est exécuté sur l'EDT:
void func(final Type1 arg1, final Type2 arg2) {
if (!SwingUtilities.isEventDispatchThread()) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
func(arg1, arg2);
}
});
return;
}
// method code goes here
}