Alternativa para setNextFocusableComponent

1 resposta
EderBaum

Bem com setNextFocusableComponent eu definia qual o próximo componente ganharia o foco.

Tipo assim:

jButton01.setNextFocusableComponent(jButton05);**Observe que pulo do botão 01 para o 05

Porém este método está “deprecated”. Sei que o que que devo usar é a classe FocusTraversalPolicy, mas ela me obriga a definir a regra de TODOS os componenetes no container, e isso seria um trabalho oneroso já que eu preciso controlar o comportamento de um unico botão por exemplo.

Alguém tem uma alternativa mais rápida e rasteira assim como setNextFocusableComponent era?

1 Resposta

Ironlynx

Se vc souber a ordem de quem ganha o foco, vc poderia ir pondo um
seuComponente.setFocusable(true);
e ir requisitando conforme o necessário(ao componente apropriado), e fazendo esse seu botão especial implementar um FocusListener.
Em geral, adicionando um FocusListener em cada elemento e mexendo no focusGained e no focusLost daria para vc fazer isso…
Exemplo:

public void focusGained(FocusEvent e) {
		if (focuscolor) {
			// Pega o componente de onde veio o evento
			Component c = e.getComponent();

			if (focusselect) {
				if (c instanceof JTextField) {
					((JTextField) c).selectAll();
				}
			}
			// transfere o foco para o proximo componente
			temp_background = c.getBackground();
			c.setBackground(background);
			c = null;

		}
	}

Onde focuscolor é um boolean e background e temp_background são um awt.Color

Criado 27 de dezembro de 2006
Ultima resposta 28 de dez. de 2006
Respostas 1
Participantes 2