Olá Pessoal tb estou tendo problema com meus actionlisteners.
eu estou fazendo o seguinte:
public class InternalFrame extends JInternalFrame implements ActionListener,
JdbcConstants, InternalFrameListener {
private Container painel = getContentPane();
private JPanel jpCtr;
public ButtonPanel Buttons;
private String acao = "";
private Component c;
private GridBagConstraints gridbag;
private JLabel label;
private JLabel jlDtCad, jlCod, jlNome, jlRg, jlOrgExp, jlDtExp, jlCpf, jlDtNasc,
jlIdade, jlSexo, jlRazao, jlNomeFant, jlIE, jlCnpj;
private JTextField jtfCod;
private Date data;
private java.sql.Date sqlData;
public void setInternalFrame(int Sizex, int Sizey, int x, int y,
String title, boolean redimensionar, boolean fechar,
boolean maximizar, boolean minimizar) {
jpCtr = new JPanel(null);
painel.add(jpCtr, "Center");
Buttons = new ButtonPanel();
jpCtr.add(this.Buttons);
Buttons.setBounds(10, 10, 500, 60);
setSize(Sizex, Sizey);
setTitle(title);
setResizable(redimensionar);
setClosable(fechar);
setMaximizable(maximizar);
setIconifiable(minimizar);
setVisible(false);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
}
public void setInternalFrame(int Sizex, int Sizey,
String title, boolean redimensionar, boolean fechar,
boolean maximizar, boolean minimizar) {
jpCtr = new JPanel(null);
painel.add(jpCtr, "Center");
setSize(Sizex, Sizey);
setTitle(title);
setResizable(redimensionar);
setClosable(fechar);
setMaximizable(maximizar);
setIconifiable(minimizar);
setVisible(false);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
}
public void statusBotoes(boolean status1, boolean status2, boolean status3,
boolean sair) {
Buttons.getJInserir().setEnabled(status1);
Buttons.getJConsultar().setEnabled(status1);
Buttons.getJCancelar().setEnabled(status2);
Buttons.getJSalvar().setEnabled(status2);
Buttons.getJSair().setEnabled(status1);
Buttons.getJAlterar().setEnabled(status3);
Buttons.getJExcluir().setEnabled(status3);
Buttons.getJSair().setEnabled(sair);
}//Fim do Metodo StatusBotoes
public void addButtonListener(ActionListener listener) {
Buttons.getJInserir().addActionListener(listener);
Buttons.getJAlterar().addActionListener(listener);
Buttons.getJConsultar().addActionListener(listener);
Buttons.getJExcluir().addActionListener(listener);
Buttons.getJCancelar().addActionListener(listener);
Buttons.getJSalvar().addActionListener(listener);
Buttons.getJSair().addActionListener(listener);
}
public void setActionInserir(ActionEvent e){
e.setSource(Buttons.getJInserir());
}
public void setActionConsultar(ActionEvent e){
e.setSource(Buttons.getJConsultar());
}
public void setActionAlterar(ActionEvent e){
e.setSource(Buttons.getJAlterar());
}
public void setActionExcluir(ActionEvent e){
e.setSource(Buttons.getJExcluir());
}
public void setActionCancelar(ActionEvent e){
e.setSource(Buttons.getJCancelar());
}
public void setActionSalvar(ActionEvent e){
e.setSource(Buttons.getJSalvar());
}
public void setActionSair(ActionEvent e){
e.setSource(Buttons.getJSair());
}
/*Varios metodos setter e getter*/
public void internalFrameOpened(InternalFrameEvent e) {}
public void internalFrameClosing(InternalFrameEvent e) {}
public void internalFrameClosed(InternalFrameEvent e) {}
public void internalFrameIconified(InternalFrameEvent e) {}
public void internalFrameDeiconified(InternalFrameEvent e) {}
public void internalFrameActivated(InternalFrameEvent e) {}
public void internalFrameDeactivated(InternalFrameEvent e) {}
public void actionPerformed(ActionEvent e) {}
essa é a minha superclasse para minha telas do sistema
Depois criei uma subclasse para minha tela de cidade
public class FormCidade extends InternalFrame {
private FormConsultaPadrao Consultar = null;
private PanelCid panelCid = null;
public FormCidade() {
setInternalFrame(530, 230, 500, 60, "Cadastro de Cidade",
false, false, false, true);
getJpCtr().add(panelCid = new PanelCid());
panelCid.setBounds(10, 10, 500, 200);
panelCid.setStatusField(false, false);
statusBotoes(true, false, false, true);
// chamando esse metodo usando this os comando funcionam normalmente
// addButtonListener(this);
//Esse metodo esta chamando a classe de eventos que criei
addButtonListener(new EventCadCid());
addInternalFrameListener(this);
}
// @Override
// public void actionPerformed(ActionEvent e) {
//
// if (e.getSource() == getButtons().getJInserir()) {
// Inserir(e);
// } else if (e.getSource() == getButtons().getJAlterar()) {
// Alterar(e);
// } else if (e.getSource() == getButtons().getJConsultar()) {
// Consultar(e);
// } else if (e.getSource() == getButtons().getJExcluir()) {
// Excluir(e);
// } else if (e.getSource() == getButtons().getJCancelar()) {
// Cancelar(e);
// } else if (e.getSource() == getButtons().getJSalvar()) {
// Salvar(e);
// } else if (e.getSource() == getButtons().getJSair()) {
// Sair(e);
// }
// }//Fim do Metodo actionPerformed
public void Inserir(ActionEvent evt) {
JOptionPane.showMessageDialog(null, " Metodo Inserir");
setAcao(INSERINDO);
DaoCidade codcid = new DaoCidade();
panelCid.setStatusField(false, true);
statusBotoes(false, true, false, false);
panelCid.getJtfCodCid().setText(codcid.setCodigo("SELECT MAX(CODCID) + 1 FROM CIDADE"));
}
public void Alterar(ActionEvent evt) {
JOptionPane.showMessageDialog(null, " Metodo Alterar");
panelCid.setStatusField(false, true);
statusBotoes(false, true, false, false);
setAcao(ALTERANDO);
}
public void Consultar(ActionEvent evt) {
JOptionPane.showMessageDialog(null, " Metodo Consultar");
panelCid.setStatusField(true, false);
statusBotoes(true, true, true, false);
if (Consultar == null) {
Consultar = new FormConsultaCidade();
FormMenu.getDesk().add(Consultar);
Consultar.setVisible(true);
}
setAcao(CONSULTANDO);
}
public void Excluir(ActionEvent evt) {
JOptionPane.showMessageDialog(null, " Metodo Excluir");
panelCid.setStatusField(false, false);
statusBotoes(true, false, false, true);
}
public void Cancelar(ActionEvent evt) {
JOptionPane.showMessageDialog(null, " Metodo Cancelar");
panelCid.setStatusField(false, false);
statusBotoes(true, false, false, true);
}
public void Salvar(ActionEvent evt) {
JOptionPane.showMessageDialog(null, " Metodo Salvar");
panelCid.setStatusField(false, false);
statusBotoes(true, false, false, true);
if (getAcao().equals(INSERINDO)) {
Cidade cidade = new Cidade();
DaoCidade daocidade = new DaoCidade();
cidade.setNomeCid(panelCid.getJtfNomeCid().getText());
cidade.setUF(panelCid.getJcbUf().getValor());
daocidade.Inserir(cidade);
} else if (getAcao().equals(CONSULTANDO)) {
Cidade cidade = new Cidade();
DaoCidade daocidade = new DaoCidade();
cidade.setCodCid(Integer.parseInt(panelCid.getJtfCodCid().getText()));
panelCid.getJtfNomeCid().setText(cidade.getNomeCid());
daocidade.Consultar(cidade);
} else if (getAcao().equals(ALTERANDO)) {
Cidade cidade = new Cidade();
DaoCidade daocidade = new DaoCidade();
cidade.setNomeCid(panelCid.getJtfNomeCid().getText());
cidade.setUF(panelCid.getJcbUf().getValor());
daocidade.Alterar(cidade);
}
}
public void Sair(ActionEvent evt) {
JOptionPane.showMessageDialog(null, " Metodo Sair");
SystemExit.ExitInternalFrame(this);
}
@Override
public void internalFrameClosing(InternalFrameEvent e) {
SystemExit.ExitInternalFrame(new FormCidade());
}
public PanelCid getPanelCid() {
return panelCid;
}
}
Agora estava fazendo um teste com uma classe de eventos para o cadastro de cidade
public class EventCadCid implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
FormCidade tela = new FormCidade();
if (e.getActionCommand().equals(tela.getButtons().getJInserir().getActionCommand())) {
tela.setActionInserir(e);
if (e.getSource() == tela.getButtons().getJInserir()) {
JOptionPane.showMessageDialog(null, "Inserir");
tela.Inserir(e);
}
} else if (e.getActionCommand().equals(tela.getButtons().getJConsultar().getActionCommand())) {
tela.setActionConsultar(e);
if (e.getSource() == tela.getButtons().getJConsultar()) {
JOptionPane.showMessageDialog(null, "Consultar");
tela.Consultar(e);
}
} else if (e.getActionCommand().equals(tela.getButtons().getJAlterar().getActionCommand())) {
tela.setActionAlterar(e);
if (e.getSource() == tela.getButtons().getJAlterar()) {
JOptionPane.showMessageDialog(null, "Alterar");
tela.Alterar(e);
}
} else if (e.getActionCommand().equals(tela.getButtons().getJExcluir().getActionCommand())) {
tela.setActionExcluir(e);
if (e.getSource() == tela.getButtons().getJExcluir()) {
JOptionPane.showMessageDialog(null, "Excluir");
tela.Excluir(e);
}
} else if (e.getActionCommand().equals(tela.getButtons().getJCancelar().getActionCommand())) {
tela.setActionCancelar(e);
if (e.getSource() == tela.getButtons().getJCancelar()) {
JOptionPane.showMessageDialog(null, "Cancelar");
tela.Cancelar(e);
}
} else if (e.getActionCommand().equals(tela.getButtons().getJSalvar().getActionCommand())) {
tela.setActionSalvar(e);
if (e.getSource() == tela.getButtons().getJSalvar()) {
JOptionPane.showMessageDialog(null, "Salvar");
tela.Salvar(e);
}
} else {
tela.setActionSair(e);
if (e.getSource() == tela.getButtons().getJSair()) {
JOptionPane.showMessageDialog(null, "Sair");
SystemExit.ExitInternalFrame(tela);
}
}
}
}
Bem pessoa se vcs olharem bem para os meus codigos, coloque uns joptionpane para mostrar na tela se tudo esta funcionando.
para a minha surpresa todos os meus joptionpane sao chamados, mostrando que ele a classe de evento usando o addButtonListener esta funcionando.
o problema e[ que ele entra nos metodos inserir, consultar, alterar, excluir, cancelar, salvar e sair, mas nao executa as funções
diferentemente se eu usar o this no metodo addButtonsListener. ele executa normalmente tudo o que esta dentro dos metodos.
Bem na verdade não sei o que esta acontencendo, nem sei o porque de um jeito executa e de outro.
bem é isso desde já agradeço a atenção de todos e aguardo resposta.
obrigado