Porta la linguetta in primo piano in JTabbedPane
-
22-07-2019 - |
Domanda
Quando uso setSelectedComponent
o setSelectedIndex
su un oggetto JTabbedPane
, il pannello compare sempre nella mia IU. Tuttavia, a volte la scheda associata al pannello rimane nascosta. In altre parole, la scheda non scorre fino a una parte visibile del riquadro a schede.
Come posso risolvere questo problema? Ho provato il formaggio selezionare un indice, quindi selezionare l'indice desiderato, così come molte altre cose più eleganti, ma arrrrgh !!
Aiutami se puoi.
Grazie, Todd
Soluzione
Penso che la tua chiamata non sia stata effettuata su EDT. Avvolgilo con SwingUtilities.invokeLater
Altri suggerimenti
Ecco un modello che puoi usare se hai un metodo che altera i componenti swing o i loro modelli e quindi deve essere chiamato sull'EDT, ma può essere chiamato da un thread in background. Ciò garantisce che func sempre sia eseguito sull'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
}