Boa tarde.
Sou novo no fórum, e também em Java…
No entanto, curso Tecnologia em Análise e Desenvolvimento de Sistemas, e…
Tenho um “trabalhinho” a fazer e java com conexão a banco de dados, que estou fazendo, mas no andamento do trabalho vai surgindo uma coisa e outra a ser feito e duvidas vão surgindo!!!
Criei alguns métodos estáticos para serem chamados em rotinas que fossem comum, para que não fosse necessário ficar reescrevendo.
Nas minhas delas (aplicação desktop), em todas elas estou configurando a mesma aparência, e para isso, manualmente coloquei ações em: FocusGained, FocusLost, MouseEntered e MouseExited, para cada botão.
Então tive a idéia de tentar criar um método estático, e fazer um loop para adicionar os eventos, a cada botão, em tempo de execução.
Obs.: Não se isso é possível, mas tentei e não funcionou. Só não sei se é por não ser possível ou porque fiz errado!!
Abaixo, esta o código que tentei fazer:
public static void setActionButtons(Container container) {
for (int i = 0; i < container.getComponentCount(); i++) {
Component c = container.getComponent(i); // pega o componente container
if (c instanceof JTextField) {
JButton bt = (JButton) c;
// adiciona eventos ao botão, em tempo de execução
bt.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
//JOptionPane.showMessageDialog(null, "teste");
}
public void FocusGained(FocusEvent evt) {
bt.setContentAreaFilled(true);
}
public void FocusLost(FocusEvent evt) {
bt.setContentAreaFilled(false);
}
public void MouseEntered(FocusEvent evt) {
bt.setContentAreaFilled(true);
}
public void MouseExited(FocusEvent evt) {
bt.setContentAreaFilled(false);
}
});
}
}
} // fim setActionButtons
E estava chamando desta forma, no meu JFrame e/ou JInternalFrame:
Tools.setActionButtons(pnBotao);
Tools: Classe que contêm o método.
pnBotao: JPainel que contêm os JButtons.
Tentei pegar todo esse método e colocar dentro da própria classe do frame, para ver se funcionava (nesse caso teria que replicar para cada frame, o que eu não gostaria de fazer), mas também não funcionou.
Bom, minha dúvida é…
É possível fazer isso que estou querendo, se sim, como proceder?
Obrigado.