Painéis seleccionados no jTabbedPane

2 respostas
colosos_colossus

Queria aplicar uma lógica mais ñ está dando certo…

um

jTabbedPane que tem vários Painéis 1,2,3,4,5 e 6.

if (1.isRequestFocusEnabled()){
   acao(); 
}
else if (2.isRequestFocusEnabled()){
  acao(); 
}

só que a execução entra no primeiro isRequestFocusEnabled como se todos já estivessem em foco.
como botar a lógica de forma que a aba seleccionada no jTabbedPane entre nos if.

2 Respostas

ViniGodoy

Sim, pq esse método apenas indica que esse painel está habilitado a receber o foco.
Não que ele tem o foco.

Para obter o índice da tab selecionada, use o método getSelectedIndex().
http://java.sun.com/docs/books/tutorial/uiswing/components/tabbedpane.html

int indice = tabbedPane.getSelectedIndex();
if (indice == 1) {
   acao();
} else if (indice == 2) {
   outraAcao();
}

Outra opção é fazer seus paineis implementarem uma interface (como ActionPanel):

public interface ActionPanel {
   void acao();
}
E, no lugar do if, fazer simplesmente:
ActionPanel panel = (ActionPanel)tabbedPane.getSelectedComponent();
panel.acao();
colosos_colossus
ViniGodoy:
Sim, pq esse método apenas indica que esse painel está habilitado a receber o foco. Não que ele tem o foco.

Para obter o índice da tab selecionada, use o método getSelectedIndex().
http://java.sun.com/docs/books/tutorial/uiswing/components/tabbedpane.html

int indice = tabbedPane.getSelectedIndex();
if (indice == 1) {
   acao();
} else if (indice == 2) {
   outraAcao();
}

Outra opção é fazer seus paineis implementarem uma interface (como ActionPanel):

public interface ActionPanel {
   void acao();
}
E, no lugar do if, fazer simplesmente:
ActionPanel panel = (ActionPanel)tabbedPane.getSelectedComponent();
panel.acao();
Blz cara ! agora intendo 8)
Criado 12 de abril de 2010
Ultima resposta 12 de abr. de 2010
Respostas 2
Participantes 2