[jTabbedPane + KeyPressed]

9 respostas
ken420

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!

9 Respostas

brunoccouto

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;
        }
    }

}
ken420

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;
M

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

ken420

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

ken420

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!

brunoccouto

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

ken420

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;

brunoccouto

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

ken420

isso mesmo muito obrigado amigo! [problema resolvido]

Criado 27 de fevereiro de 2009
Ultima resposta 3 de mar. de 2009
Respostas 9
Participantes 3