Boa noite pessoal, tenho uns jtextfields, jbuttons e uma jtable, quando dou TAB ele passa pelos jtexts e vai para tabela, quando ele chega na tabela eu tenho que percorrer todas as linhas e colunas da tabela para que ele saia da tabela e só ai vá para os buttons. Queria saber se existe alguma forma de o TAB não ir para a tabela?
Como fazer para o TAB selecionar só os itens que quero?
B
1 Resposta
B
Solucao aceita
1 like
Pra servir para as gerações futuras srsrsrs conseguir resolver usando o método FocusTraversalPolicy. Esse método te permite escolher quais campos você quer que tenha foco pelo TAB. No meu exemplo eu queria que ele fica-se apenas em duas barras, quantVenda e pesquisaProduto.
Primeiro você tem que construir a classe herdade eu chamei de controlFocusTraversalPolicy. Ficou assim:
import java.awt.FocusTraversalPolicy; import java.util.ArrayList; import java.awt.Component; import java.awt.Container;
public class controlFocusTraversalPolicy extends FocusTraversalPolicy {
ArrayList<Component> order;
public controlFocusTraversalPolicy(ArrayList<Component> order) {
this.order = new ArrayList<>(order.size());
this.order.addAll(order);
}
@Override
public Component getComponentAfter(Container focusCycleRoot, Component aComponent) {
int idx = (order.indexOf(aComponent) + 1) % order.size();
return order.get(idx);
}
@Override
public Component getComponentBefore(Container focusCycleRoot, Component aComponent) {
int idx = order.indexOf(aComponent) - 1;
if (idx < 0) {
idx = order.size() - 1;
}
return order.get(idx);
}
@Override
public Component getDefaultComponent(Container focusCycleRoot) {
return order.get(0);
}
@Override
public Component getLastComponent(Container focusCycleRoot) {
return order.get(order.size() - 1);
}
@Override
public Component getFirstComponent(Container focusCycleRoot) {
return order.get(0);
}
}
Depois disso eu fiz um método dentro do jframe e o importei para dentro do initComponents. Ficou assim;
public void controlFocus(){ ArrayList order = new ArrayList<>(2); order.add(quantVenda); order.add(pesquisaProduto); controlFocusTraversalPolicy policy = new controlFocusTraversalPolicy(order); setFocusTraversalPolicy(policy); }
Pronto agora ele só foca esses dois campos e na ordem que eu escolhi.
Criado 9 de agosto de 2018
Ultima resposta 9 de ago. de 2018
Respostas 1
Participantes 1
Alura O que é Python? — um guia completo para iniciar nessa linguagem de programação Acesse agora o guia sobre Python e inicie sua jornada nessa linguagem de programação: o que é e para que serve, sua sintaxe e como iniciar nela!
Casa do Codigo Engenharia de Prompt para Devs: Um guia para aprender a... Por Ricardo Pupo Larguesa — Casa do Codigo