Boa tarde pessoal.
preciso criar uma tela padrão de cadastro, estou usando o JInternalFrame que denominei de ( FrmPadrao ). Nele estou adicionando um painel e alguns JButton.
Depois eu estou criando outro JInternalFrame (FrmCadastroCliente) e estou extendendo do FrmPadrao.
O que não estou conseguindo fazer é que os componentes que foram inseridos no frmPadrao, apareçam no meu FrmCadastroCliente em tempo de projeto.
Pois preciso subscrever as ações dos botões que foram adicionados no FrmPadrao.
Alguém sabe como posso fazer para resolver isso ?
Estou usando o NetBeans 6.7. e o java 6.
até mais …
Me interessa muito esse topico pq em minha aplicação vou ter diversas telas se e fazer no manual pra tudo vai ser complicado e ERRADO!!
Quem souber posta ai!
rapaz, até onde eu sei o Netbeans não tem mesmo suporte a isso, na verdade, das IDE’s que eu conheço só o Delphi fazia isso. Você vai precisar escrever na mão os eventos dos botões, não tem jeito.
Crie um JPanel contendo o seu painel principal e seus botões, no caso de estar utilizando o NetBeans, dá pra você adicionar isso na sua paleta de componentes podendo utilizar sempre esse painel padrão para telas de cadastro.
O melhor de fazer um painel, é que você pode utilizar posteriormente isso em um JInternalFrame, JDialog, JFrame, enfim ele se torna mais genérico ainda.
renanedpedroso,
mas como eu faria para implementar os métodos dos botões na classe que eu adicionar esse componente JPanel que for criado ?
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!
Ah… outra coisa…
O NetBeans permite que você adicione na paleta de componentes, aqueles que você mesmo criou, por exemplo o PainelCadastro. Mas isso é outra história.
Espero ter ajudado.
Abraço!
valeu pela dica, será de grande ajuda aqui.
Boa dica, vou deixar aki nos favoritos!
Pode até ser que existam outras maneiras de se resolver, mas a maneira mais adequada e sem gambiarras que encontrei foi essa.
Espero ter ajudado.
Abraço!