Bom dia,
tenho uma tela com várias abas, essas abas são todas JPane que eu adiciono no meu Frame e nesse Frame existe um jTabbedPane, o que eu preciso é quando o usuário
clicar em um botão troque essas automaticamente, com o jTabbedPane.setSelectedIndex() consigo trocar a aba, porém, preciso chamar um JPanel específico e
não pelo index, mas sim pelo seu nome, existe algum método que troco de aba pelo nome do componente ao invés do index?
jTabbedPane.setSelectedIndex(1);
marcos.stuchi existem algumas forma de vc fazer a seleção pelo “nome”, mas talvez não da forma que você está pensando.
Vejo duas soluções possíveis.
Ou você cria constantes int com o nome do JPanel, recebendo o valor respectivo ao índice. Ou você utiliza o método setSelectedComponent(JPanel);, para passar o objeto desejado.
Exemplo:
final static int PANEL1 = 0;
final static int PANEL2 = 1;
JTabbedPane jTabbedPane = new JTabbedPane();
JPanel jPanel1 = new JPanel(),jPanel2 = new JPanel();
jTabbedPane.add(jPanel1);
jTabbedPane.add(jPanel2);
//Solução 1
jTabbedPane.setSelectedIndex(PANEL1);
//Solução 2
jTabbedPane.setSelectedComponent(jPanel2);
boa tarde urbgames,
na verdade é assim… o meu Frame serve com minha tela principal do meu sistema… e a partir de um menu(ou um botão), eu chamo minhas telas que seriam esses JPane… abaixo segue o codigo
da minha tela de cadastro de cliente por exemplo:
if (cadastro_cliente == "F") {
jTabbedPanePrincipal.setVisible(true);
jTabbedPanePrincipal.grabFocus();
JPanel panel = new JPanel();
panel.setName("Cadastro de Cliente");
try {
panel.add(new Jp_CadastroCliente());
} catch (Exception ex) {
Logger.getLogger(Fr_Principal.class.getName()).log(Level.SEVERE, null, ex);
}
jTabbedPanePrincipal.add(panel);
jTabbedPanePrincipal.setSelectedComponent(panel);
Dimension dimensao = new Dimension(300, 90);
panel.setSize(dimensao);
int i = jTabbedPanePrincipal.getSelectedIndex(); //Botão fechar na aba
jTabbedPanePrincipal.setTabComponentAt(i, new ButtonTabComponentCadastroCliente(jTabbedPanePrincipal));
cadastro_cliente = "A";
} else {
JOptionPane.showMessageDialog(null, "Cadastro de Cliente já está aberto!!!", "Atenção", JOptionPane.WARNING_MESSAGE);
}
o que eu quero é que depois que aparece a mensagem pro usuário “Cadastro de Cliente já está aberto!!!” ele foque no cadastro de clientes(que é o meu JPane), independente
de qual index ele esteja aberto, pois nem sempre a aba do meu cadastro de clientes será um index fixo.
a sua solução 2 seria ele adicionar mais um aba com o JPane e na verdade eu só queria focar em uma aba que já esta aberto.