Boa noite, pessoal meu problema eh o seguinte eu tenhu uma jtable que exibe nomes, o focus aponta para minha jtable eu seleciono o ultimo registro que esta registrado em meu banco de dados, como faço para apenas quando estiver no ultimo registro e eu apertar o TAB ele perder o focus da jtable e ir para meu jtextfield, sei que e preciso usar evento para capturar tecla do teclado nesse caso ja tenho feito
ou entao se algueim tiver um metodo de uma acao do JTable perder o focu e a jtextfield ganhar o focu
Matheus_Leandro_Ferr
Olá,
Criei um método para modificar o evento da tecla TAB para uma JTable..
você pode utiliza-lo.
Take a look:
InputMapim=suatabela.getInputMap(suatabela.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);KeyStrokelo_key_tab=KeyStroke.getKeyStroke("TAB");im.put(lo_key_tab,im.get(KeyStroke.getKeyStroke(KeyEvent.VK_GREATER,0)));ActiontabAction=newAbstractAction(){publicvoidactionPerformed(ActionEvente){//// Se for a ultima linha selecionada////// Requista o focu no botão.//button.requestFocus();}};suatabela.getActionMap().put(im.get(lo_key_tab),tabAction);
ken420
…
ken420
cara veja como consigui compila esse codigo
publicvoidtab(){InputMapim=tb_cliente.getInputMap(tb_cliente.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);KeyStrokelo_key_tab=KeyStroke.getKeyStroke("TAB");im.put(lo_key_tab,im.get(KeyStroke.getKeyStroke(KeyEvent.VK_TAB,0)));AbstractActiontabAction=newAbstractAction(){publicvoidactionPerformed(ActionEvente){//// Se for a ultima linha selecionada////// Requista o focu no botão.//tf_pesquisarN.requestFocus();}};tb_cliente.getActionMap().put(im.get(lo_key_tab),tabAction);}
É isso mesmo que preciso? pq veja bem meu problema quando abre minha tela e aperto TAB ele vai procurando os focus ate ai tudo bem
mas quando ele foca a JTable se eu apertar tab ele vai pulando de linha mas n sai o focus NUNCA da JTable entendeu?
Consegui compila o codigo acima mas aonde invoco o metodo tab() ?
Matheus_Leandro_Ferr
Exatamente isso.
Logo após a criação de sua tabela você chama ele.
dentro de actionPerformed, você implementa sua codificação, ou simplesmente chama focu para outro botão.
Quando você for apertar o TAB em sua JTable, ele já vai fazer automaticamente o que você determinou.
Pode confiar.
samea
Oi pessoal estou com uma duvida a respeito de JTable, e gostaria de saber se vcs podem me ajudar eu tenho uma JTable que recebe os valores do banco de dados, bom ate ai tudo bem o problema eh que eu coloquei um fundo na minha aplicacao eu queria deixar a tabela transaparente para que esse fundo aprarece no espaco em branco da tabela tambem alguem ai sabe me dizer como que eu posso fazer isso?
Eu ja tentei setOpaque, table.setSelectionMode(Color.TRANSLUCENT);, e muito mais, mas nada deixou a minha tabela transparente por favor alguem me ajude!
onyaszimba
samea:
Oi pessoal estou com uma duvida a respeito de JTable, e gostaria de saber se vcs podem me ajudar eu tenho uma JTable que recebe os valores do banco de dados, bom ate ai tudo bem o problema eh que eu coloquei um fundo na minha aplicacao eu queria deixar a tabela transaparente para que esse fundo aprarece no espaco em branco da tabela tambem alguem ai sabe me dizer como que eu posso fazer isso?
Eu ja tentei setOpaque, table.setSelectionMode(Color.TRANSLUCENT);, e muito mais, mas nada deixou a minha tabela transparente por favor alguem me ajude!
Samea, o método para fazer isso é realmente o setOpaque(). Mas não adianta usar direto na table. As células que formam a tabela são, na verdade, JLabels que são implementadas pelo TableCellRenderer.
Eu tentei fazer o mesmo e consegui, mas tive que criar mais duas classes.
Eu criei uma classe que extende o DefaultTableCellRenderer e implementei o método getTableCellRendererComponent(). Ali eu mexi nas propriedades do JLabel usado para ele poder ou não receber o setOpaque():
publicclassNewTableCellRendererextendsDefaultTableCellRenderer{privatebooleantranparente=false;publicNewTableCellRenderer(){super();}// Fim do construtorpublicvoidsetTranparencia(booleantranparente){this.tranparente=tranparente;}publicComponentgetTableCellRendererComponent(JTabletabela,Objectvalor,booleanestaSelecionado,booleantemFoco,intlinha,intcoluna){JLabellabel=(JLabel)super.getTableCellRendererComponent(tabela,valor,estaSelecionado,temFoco,linha,coluna);// Exibe o fundo da tabela ou o do próprio labellabel.setOpaque(!this.tranparente);// Centraliza o labelif(coluna!=0)label.setHorizontalAlignment(JLabel.CENTER);returnlabel;// Retorna o label formatado}// Fim do método getTableCellRendererComponent}// Fim da classe NewTableCellRenderer
Agora estou tentado criar um JLabel diferente (com cantos arredondados) para colocar nesse modelo. Só não sei como eu mantenho o fundo transparente do JLabel, pois quando eu sobrescrevo o método paintComponent() ele perde esta propriedade. Se alguém puder me ajudar eu fico grato.