Olá pessoal, sou novo aqui no guj. Tenho um amigo na faculdade que sempre entra aqui. Começarei a frequentar diariamente tentando ajudar a quem precisa.
Bom, trabalho com Java a algum tempo, nao sou expert no assunto mais me viro bem!! sempre me deparo com problemas e busco soluções. No momento estou desenvolvendo sistema para uma empresa que realiza manutenções em motos. Criei diversas telas, onde, todas as telas tem a mesma funções implementadas em botoes JButton como, por exemplo, novo, excluir, editar, cancelar, sair, entre outros. Bem gostaria de criar algo como, por exemplo, quando o botão novo for clicado alguns dos outros botões precisaram ficar desabilitados como o botão excluir, editar, sair e outros. Gostariar de fazer isto utilizando os recursos de orientação a objetos mais não estou tendo está visão, pois, criar métodos em cada classe para realizarem as mesmas coisas não é viável, quero fazer algo como heranças onde implementarei esses métodos uma única vez para habilitar e/ou desabilitar botões. Muito orbigado!
Uma ideia é usar listeners que possam escutar os eventos do botão “Novo”.
Alguém implementa estes listeners e executa a ação de desabilitar os demais botões.
Não sei no seu caso qual se a melhor abordagem seria os próprios botões implementarem listener e ao escutarem o evento, se desabilitarem ou se o melhor seria deixar a tarefa de escutar para uma outra classe. Eu prefiro esta segunda opção.
O que voce pretende fazer é muito simples. Basta criar um único método void que recebe um parâmetro booleano que vá habilitar e desabilitar os botões.
Se voce criou estes botões para todas as telas, não importa quanto a habilitar ou desabilitar os mesmos, pois sempre será a mesma coisa para todas as telas, eis o método:
Agora implemente na classe a Inteface ActionListener desta maneira:
....
public class Principal extends JFrame implements ActionListener
....
Neste momento, ele vai te pedir para voce implementar o método abstrato ActionPerformed, que voce vai implementá-lo desta maneira
public void actionPerformed(ActionEvent e) {
if (e.getSource()==btnIncluir){
enableButtons(false);
// código de incluir
......
} else if (e.getSource()==btnAlterar){
enableButtons(false);
// código de alterar
......
} else if (e.getSource()==btnExcluir){
// código de excluir
......
} else if (e.getSource()==btnPesquisar){
// código de pesquisar
......
} else if (e.getSource()==btnSalvar){
enableButtons(true);
// código de salvar
......
} else if (e.getSource()==btnCancelar){
enableButtons(true);
// código de cancelar
}
}
Ah, não se esqueça de acrescentar os listener nos botões:
JButton btnIncluir = new JButton("Incluir").addActionListener(this);
JButton btnAlterar = new JButton("Alterar").addActionListener(this);
JButton btnExcluir = new JButton("Excluir").addActionListener(this);
JButton btnPesquisar = new JButton("Pesquisar").addActionListener(this);
JButton btnSalvar = new JButton("Salvar").addActionListener(this);
JButton btnCancelar = new JButton("Cancelar").addActionListener(this);
Bom, eu te dei aqui uma visão de como fazer isto para uma classe, entretanto, como voce fez várias telas, eu precisava saber se voce fez isto com JDesktopPane e JInternalFrame, JTabbedPane ou com JFrame normal.
Quanto os métodos Incluir, Alterar, Salvar e etc, estes não tem jeito, voce terá que implementá-los para cada tela (classe), entretanto, voce não precisa criar vários botões ou vários menus, basta apenas criar um na classe principal.
Porém só vou te passar esse código quando voce me responder de volta: