como posso descobrir o nome da variável que eu declarei?
vamos supor
lDia = new javax.swing.JLabel();
como descubro através de alguma função que eu tenho uma jLabel chamada lDia?
como posso descobrir o nome da variável que eu declarei?
vamos supor
lDia = new javax.swing.JLabel();
como descubro através de alguma função que eu tenho uma jLabel chamada lDia?
omegatiger, nao tenho certeza, mas acho que o método .getName() retorna isso. Me desculpe se estiver enganado, mas teste-o. 
Amigo não deve ser esse … pois com ele eu precisaria setar todos os nomes das variaveis, sendo que ela ja tem um nome fixo.
Ola,
Voce tem que usar refletion.
Field[] fl = classe-que-contem-o-lDia.getClass().getDeclaredFields();
for (int i=0; i<fl.length;i++){
String nome = fl[i].getName();
System.out.println("nome variavel=", nome);
}
Mas para que quer isto ?
Talvez seja o caso de ver a logica do programa…
T+
Obrigado amigo, irei testar …
Pense comigo, para ver se minhas idéias estão indo num caminho interessante =) … tenho uma aplicação que envolve varios jTextFields. muitos devem ser formatados … no caso do campo de telefone, fax, cnpj, cpf, datas entre outros voltados as necessidades do programa.
Geralmente a declaração deles são iguais, tTel, tCpf … em toda janela aberta eu tenho comandos genéricos, um para delimitar o tamanho que se pode digitar num jtextfield, outro para reajustar todo focu da janela (deixar focu apenas para os textfield), um para setar a entrada do mouse no textfield entre outras, eu passo os components do meu container e assim ele testa a finalidade de cada atributo dentro dele e conforme o que for ele chama determinado método. Fazendo isso eu ganho tempo em desenvolvimento pois não preciso ficar setado 1 por 1 as Actions e etc, do meu componente.
através dessa lógica posso formatar o campo genéricamente também … se for declarado como um “telefone” ele usa determinada mascara e etc …
Usei o Profiler através do Netbeans para testar o tempo das chamadas dos métodos e vi que a perca de desempenho é baixa, como eu sempre tenho que varrer todos os componentes da classe, valeria apena eu setar uma mascara conforme a necessidade.
Futuramente pretendo fazer um outro método que teste automaticamente se o campo está preenchido sem precisar ficar linkando jlabel com jtextfield … terei algumas limitações como, todo jtextfield estará obrigatóriamente ao lado direito do jlabel, ele testará os Jlabels que apresentam * marcado no nome.
não sei cara, eu nunca trabalhei profissionalmente com java desktop, mas eu criaria componentes para o que precisasse ao inves de fazer uma analise do nome dos atributos da classe (tela), tipo se quizer que os TextField’s tenham máscaras, cria um MaskTextField que aceita uma mascara no seu construtor (se eh que já não tem isso na própria api), se quer uma combinação “label: textField”, cria um componente composto por um textField e label, e assim por diante.
Não sou muito fã de usar reflection dessa forma, para analisar por exemplo se um campo se chama “telefone” e ai alterar as propriedades dele… seila, vc que sabe, como disse, não tenho muita experiencia com java desktop, com certeza outras pessoas te darão dicas melhores…
Quanto ao assunto do topico, só uma observação, com reflection vc pega os atributos da classe e não as variaveis (eh que variavel esta mais ligada a coisa de método e tal, pelo menos para mim)
valeu! 
Seria mais interessante tu criar uma classe, extender a classe JTextField e fazer as formatações necessarias nessa nova classe. Pode criar uma classe com apenas o construtor passando um tipo, q tu criaria. Dentro do construtor ele chamaria um método que trataria esse tipo. Se for telefone, cria uma máscara para telefone…etc… Na minha opinião seria uma forma mais inteligente de se trabalhar.
Fernando Rosa
Veja bem … atualmente fiz um método que eu passo como parametro o jTextField que quero formatar … funciona tranquilo.
Fernando como tu disse acho sua idéia bastante viável também e concerteza é boa pois nela eu poderia montar todas as “caracteristicas” que eu preciso para o jTextField.
Agora eu ando pensanso assim, suponha que em apenas 1 janela eu tenho mais de 20 jTextFields … eu teria que dar um new JTextFieldNovo em cada jTextField da minha classe, para levar as propriedades que eu desejo de mascaras e action’s em geral. Em 1 janela apenas talvez não se torne muito trabalhoso, agora vamos falar de 10, 20 janelas e sabe-se la quantos jTextField … ao invés de ir uma por uma eu chamo um método que demora cerca de 230ms para finalizar onde ele me seta 2 tipos de ações e seta o Document do jTextField e não seria nada trabalhoso adicionar para ele formatar automaticamente o campo … note que estou levando como exemplo apenas o jTextField, nada impede que nesta busca eu generalize outros componentes.
em questão de velocidade de desenvolvimento, será que estou pensando certo? =)
Estou aberto a sugestões …
ué, mas você não tera que fazer 20 new JTextField em 20 telas tb?! fora a chatisse de ficar preso a um padrão de nome para os atributos. Se o actions de todos é o mesmo, cria esse action e passa para todos o mesmo também pelo construtor, se vc tem muito campo com a mesma máscara, especialize e crie ja um JTextFieldTelefone com a máscara daquele campo direto.
Agora imagina, vc tem 20 campos, todos diferentes, com máscaras diferentes, sua analise ficara mais ou menos como:
if(campo.contains("cpf")) mascara = "blablabla1";
else if(campo.contains("telefone")) mascara = "blablabla2";
else if(campo.contains("cnpj")) mascara = "blablabla3";
...
até o 20....
Muito mais “elegante” e até mesmo produtivo (eu acho) se fizer
JTextField cpf = new JTextFieldMask("blablabla1");
JTextField telefone = new JTextFieldMask("blablabla2");
JTextField cnpj = new JTextFieldMask("blablabla3");
....
Leve em consideração um futuro retrabalho, novas pessoas mexendo no código (que saco vai ser explicar pro estagiario esses padrões, que o telefone na tela dele esta errado porque ele escreveu o atributo como sendo “phone”).
seila… eu ainda acho melhor fazer dessa forma :roll: mas vc que sabe :razz:
Se eu fizesse na mao as janelas té concordaria com você em declarar um new ao invés de fazer como estou dizendo … mas como uso uma ferramenta para desenvolvimento de swing não preciso determinas os news …
kk acho q esse topico ja foi alem do que era necessario, vlw ae pelas idéias e opiniões =)