Alterar nome de "component" por código?

5 respostas
java
F

Tenho 40 JTextfield criados pelo Swing e preciso criar um método que realize as alterações em todos, sem precisar criar 40 eventos diferente e cheguei até aqui mas não muda.

Ele muda o nome da variável, mas não consigo aplicar no Swing da variáel pronta.

static int xx=1;
JTextField var = new JTextField((String.valueOf(xx)));
var.setName("jTextField"+xx);
if(var.isRequestFocusEnabled())
{
	var.setBackground(Color.black);
	var.setForeground(Color.white);
	jTextFieldSelect1.setText(var.getText());
	xx++;
	var.setName("jTextFieldRes"+xx);
	System.out.println(var.getName());
}

5 Respostas

drsmachado

E não vai conseguir mesmo. Essa alteração necessitaria da reescrita do código e da recompilação.

F

MAs a classe Component aceita o revalide e repaint. Isto não teria que funcioar ?
E caso eu criar esse JTextField por método tambem, seria possivel.
Porque não faz sentido, imagina uma aplicação com centenas de components, é ilógico criar events para todos eles.

lvbarbosa

O setName é o nome do Component, e não o nome da variável. Todo component do Swing pode ter um nome, e é apenas umas String. Você pode utilizar esse nome para identificar um componente. É apenas um campo extra, para facilitar algum tipo de identificação.

lvbarbosa

Você pode registrar o mesmo objeto para receber todas as notificações dos componentes, basta criar uma classe separada (ou uma função anônima) e passar o mesmo objeto para as text fields.

F

Ivbarbosa, mas se tiver que fazer o registro de component, é o mesmo que ter que escrever 40 eventos.
Pois tenho que indicar o JtextField que esta a passar as notificações.

Criado 13 de março de 2017
Ultima resposta 13 de mar. de 2017
Respostas 5
Participantes 3