[jTabbedPane + KeyPressed]

Pessoal to com um problema creio que facil de se resolver porem ta me dando uma dor de cabeca danada! vejam minha situação,
eu tenho um jTabbedPane que contem 2 abas! na aba 1 ele cadastra apenas briquedos e na aba 2 ele cadastra apenas comida! ate ai tudo ok cadastra normal mas o problema é o seguinte as 2 abas possue 1 botao que no caso é o de cadastrar, tenho o metodo de capturar teclas funcionando tudo ok vejam

case KeyEvent.VK_F3:
                   cadastraBrinquedo();
                   //cadastraComida();
                break;

o que eu preciso é o seguinte preciso que tanto na aba 1, quanto na aba 2, quando eu pressionar o botao F3 ele faça o cadastro porem n posso deixar os 2 metodos juntos se nao quando cadastra no banco ele vai da problema que uma das abas n foi preenchida pq no caso ou cadastro comida ou cadastro brinquedo, entao ai vem a questao como fazer uma condicao dentro do case
Exemplo a grosso modo:

case KeyEvent.VK_F3:
        if(cadastraBriquedo == true)
              cadastraBrinquedo();
                     break;
        else if(cadastraBriquedo == false)
              cadastraComida();
                     break;

sei que o codigo acima esta errado mas como faço essa condição? algueim pode me da uma mao? muito obrigado pela atencao!

Você pode usar algo desse tipo:

if (evt.getKeyCode() == KeyEvent.VK_F3) {
    
    int painelAtual = tabbedPane.getModel().getSelectedIndex();

    switch (painelAtual) {
        case 0 : {
            cadastrarBrinquedo();
            break;
        }
        case 1 : {
            cadastrarComida();
            break;
        }
    }

}

tentei essa logica mas ainda nao consegui algueim pode me ajudar?

case KeyEvent.VK_F3:
                   if(navegaTabbedPane == 1)
                      try
                      {
                          cadastraClienteF();
                          //JOptionPane.showMessageDialog(null, "chamou 1");
                      }
                      catch(Exception erro)
                      {
                           JOptionPane.showMessageDialog(null, "erro1"+erro);
                      }
                   else if (navegaTabbedPane == 2)
                      try
                      {
                          cadastraClienteJ();
                          //JOptionPane.showMessageDialog(null, "chamou 2");
                      }
                      catch(Exception erro)
                      {
                           JOptionPane.showMessageDialog(null, "erro2"+erro);
                      }
                break;

O que é ‘navegaTabbedPane’? Os objetos do tipo JTabbedPane têm o método getSelectedIndex() que retorna o índice da aba atual.

navegaTabbedPane eu setei a aba um como navegaTabbedPane = 1; e a aba dois como navegaTabbedPane = 2;
ai fis aquela condicao if(navegaTabbedPane == 1) e eu apertar F3 abre briquendos se navegaTabbedPane == 2 e eu apertar F3 abre comida mas pelo jeito esta errado pq nao ta dando certo

Vou tentar explicar com mais calma, tenho 1 tabbedpane que tem 2 abas, Aba 1, Aba 2, na minha aba1 tenho o botao f3 que serve para cadastrar A no meu banco de dados e na minha aba 2 tambem tenho um botao f3 que serve para cadastrar B, agora em meu tratamento do botao VK_F3 preciso fazer uma logica para quando estiver na Aba 1 e apertar F3 ele cadastrar apenas a aba1 e quando estiver na Aba 2 e cadastrar com o VK_f3 ele cadastrar apenas o conteudo da Aba 2, entendero? aguardo resposta e obrigado pelos coments!

A solução que te indiquei não funcionou?

bruno mas em que momento desse codigo que vc me passo eu informo que o case 1 é a aba 1 e o case 2 é a aba 2?
pq tenho 2 abas no meu jtabbedpane, e tenho 2 botoes f3 nas 2 abas, entendeu? o que eu quero é quando pressionar o botao f3 em uma aba e fazer X e quando pressionar o botao f3 na aba 2 ele fazer Y;

Bom Ken, talvez eu não tenha entendido perfeitamente sua necessidade,

no codigo que te passei eu quis mostrar que…

seleciona o indice da Aba atual do tabbedPane.
que no caso, a primeira Aba é 0, e assim vai incrementado 1 pra cada próxima Aba…

Se vc tiver duas Abas, a primeira é ABA_A e a segunda ABA_B,
quando vc executar esse trecho de código vai retornar o indice da qual está selecionada,
0 - se for ABA_A
1 - se for ABA_B

Ai é só usar isso pra fazer qualquer evento.
Se for 0 - Executa eventoABA_A();
Se for 1 - Executa eventoABA_B();

Eu achei que era isso que vc tinha perguntado, acho que entendi mal.
Mas a dica fica ai, se algum dia precisar… :smiley:

Flw

isso mesmo muito obrigado amigo! [problema resolvido]