Ola pessoal, tenho uma JPanel e gostaria de criar uma classe separada somente para os botoes de edicao.
Assim eu poderei utilizar os botoes em muitos JPanels diferentes sem ter q cria-los toda hora.
Qual as opinioes sobre esse metodo?? Seria mais pratico??
Usar Classe soh para os Botoes
5 Respostas
Se forem iguais para várias telas, talvez uma classe que estenda JPanel com os seus botões ajude. Um pequeno painel que poderia ser adicionado em outros paineis, facilitando o trabalho.
Sera melhor fazer uma classe para cada botao com sobrecarga?
por exemplo, uma classe apenas para o botao gravar com varios metodos gravar(),
com diferentes quantidades de argumentos?
Depende da situação… esses botões editam o que exatamente? Por exemplo, poderia ser feito dessa forma (apesar de não ser a única forma de se fazer):
public class PainelEdicao extends JPanel {
public PainelEdicao() {
super();
// inicializa os componentes
JButton editar = new JButton("Editar");
editar.addActionListener(new EditarListener()); // crio uma instância da inner class
// inicializo e adiciono todos os componentes necessários
add(editar);
}
// aqui a classe que comanda os eventos
private class EditarListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
// TODO fazer algo aqui
}
}
}
Se for apenas botões como OK, CANCEL, etc é necessário apenas JOptionPane.(algum dialog):
http://java.sun.com/docs/books/tutorial/uiswing/components/dialog.html
Naoki, acho que você está caindo na mesma armadilha em que eu cai qdo comecei com OO. Parece óbvio o que vou dizer. O paradigma se chama Orientação a OBJETOS, e não Orientação à Classes. Assim, pense em termos de objetos, não em termos de classes. No caso dos botões Gravar, codifique cada um deles primeiro, e decida se vale a pena ou não criar uma classe para eles em uma refatoração. Vamos supor que você crie uma classe
BotaoGrava, com 4 versões do método gravar. Se você utilizar 4 objetos dessa classe e cada objeto utiliza recursos de uma única versão do método, concordo comigo que não tem sentido reuní-los em uma classe ? Em outras palavras, você vai introduzir uma complexidade desnecessária no seu sistema.