Método que recebe Evento e identifique o componente que lhe enviou o evento
13 respostas
fsfnit
Bom Pessoal, estou usando o netbeans para me ajudar a desenvolver umas APP´s bobas em Swing.
Notei que o netbeans gera varios métodos diferentes para cada componente.
Enfim, eu tenho um método ActionPerformed na classe classe, onde coloco tudo qto é evento para ser caputrado lá.
Só que gostaria de criar um método, onde eu receberia um Evento, e descobriria qum foi que ocasionou o o evento.
Pq tenho 10 jFormattedTextfield, então queria colocar um Listener em cada um, qdo alguem desse um click em um deles, eu iria pegar qual é o jformatted, e setar o caretposition para 0, e Mascarar o componente(//____) enquanto o cara digita,ou seja, ir adicionando / a cada digitos válidos.
Alguem sabe coo posso pegar um Evento e descobrir quem é o chamador desse evento?
Sim,mas como seria ?
Pois teria que comparar de um por um ?
tipo (evt.getSource() == jFormattedtextField1){}
tipo (evt.getSource() == jFormattedtextField2){}
tipo (evt.getSource() == jFormattedtextField…){}
tipo (evt.getSource() == jFormattedtextField10){}
???
Estou querendo fugir disto.
Ja usei o Maskformater, mas independente, ´precisava desse metodo como eu falei, pois irá realizar outras tarefas.
Swing é OO e MVC. Não se esqueça disso. Procure por javax.swing.text.Document. Os JTextField e JFormattedTExtField fazem uso dele. Ele é o modelo para inputs de texto e permite controlar o input em si. Por exemplo para evitar que o usuário digite letras em campos numéricos, simbolos estranhos , etc… forçar um tamanho máximo para o campo etc… Tudo isto pode ser feito criando um Document.
Ja usei o Maskformater, mas independente, ´precisava desse metodo como eu falei, pois irá realizar outras tarefas.
Swing é OO e MVC. Não se esqueça disso. Procure por javax.swing.text.Document. Os JTextField e JFormattedTExtField fazem uso dele. Ele é o modelo para inputs de texto e permite controlar o input em si. Por exemplo para evitar que o usuário digite letras em campos numéricos, simbolos estranhos , etc… forçar um tamanho máximo para o campo etc… Tudo isto pode ser feito criando um Document.
Blza, eu ja sabia que poderia trabalhar com metodos dos componentes.
Mas precisava saber como que eu faria este método que falei acima.
mas obrigado pela ajuda.
danieldestro
Ao que parece você está querendo fazer do modo mais difícil (trabalhoso/repetitivo).
fsfnit
Extamento o oposto Daniel.
Todas as ideias que vieram, eram p/ trabalhar com metodos de cada componente, coisa que eu ja estou fazendo, mas não estou gostando.
Quero exatamente o contrario: Um método único, onde eu pergunto que é o sender do evento, se for TextField, faz uma rotina, se for um formattedtextfield, faça outra rotina, se for um groupbox de radio, faça outra.
É o oposto de tudo que fui falado.
Se entendi bem o que vocÊ quer, provavelmente o uso de classes internas pra declarar os eventos pra cada “tipo” de componente resolveria seu problema.
Não sei se esse código aí funcionaria, mas é só uma idéia… só um “modelo”.