Primeiramente crie uma interface que representa as ações dos botões da tela principal.
public interface AcoesCadastro {
void gravar();
void cancelar();
}
Crie o seu Painel utilizando a ferramenta gráfica do NetBeans, essa classe possui um atributo do tipo AcoesCadastro (interface acima) para que essa interface seja implementada em na janela que possui este painel.
public class PainelCadastro extends javax.swing.JPanel {
private AcoesCadastro acoesCadastro;
public PainelCadastro(AcoesCadastro acoesCadastro) {
this();
this.acoesCadastro = acoesCadastro;
}
public PainelCadastro() {
initComponents();
}
public AcoesCadastro getAcoesCadastro() {
return acoesCadastro;
}
public void setAcoesCadastro(AcoesCadastro acoesCadastro) {
this.acoesCadastro = acoesCadastro;
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
botaoCancelar = new javax.swing.JButton();
botaoGravar = new javax.swing.JButton();
botaoCancelar.setText("Cancelar");
botaoCancelar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
botaoCancelarActionPerformed(evt);
}
});
botaoGravar.setText("Gravar");
botaoGravar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
botaoGravarActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(169, Short.MAX_VALUE)
.addComponent(botaoGravar, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(botaoCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(172, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(botaoCancelar)
.addComponent(botaoGravar))
.addContainerGap())
);
}// </editor-fold>
private void botaoGravarActionPerformed(java.awt.event.ActionEvent evt) {
if(acoesCadastro != null){
acoesCadastro.gravar();
}
}
private void botaoCancelarActionPerformed(java.awt.event.ActionEvent evt) {
if(acoesCadastro != null){
acoesCadastro.cancelar();
}
}
// Variables declaration - do not modify
private javax.swing.JButton botaoCancelar;
private javax.swing.JButton botaoGravar;
// End of variables declaration
}
Janela que implementa a interface AcoesCadastro e possui o painel de cadastro:
import javax.swing.JOptionPane;
public class Janela extends javax.swing.JFrame implements AcoesCadastro {
public Janela() {
initComponents();
painel.setAcoesCadastro(this);
}
@SuppressWarnings("unchecked")
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setBounds(new java.awt.Rectangle(50, 50, 360, 220));
setResizable(false);
getContentPane().setLayout(null);
PainelCadastro painel = new PainelCadastro();
painel.setBounds(10, 10, 340, 180);
this.add(painel);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Janela().setVisible(true);
}
});
}
public void gravar() {
JOptionPane.showMessageDialog(this, "Ação: Gravar");
}
public void cancelar() {
JOptionPane.showMessageDialog(this, "Ação: Cancelar");
}
}
Teste aí, qualquer coisa estamos aí.
Espero ter ajudado.
Abraço!