Me ajudem por favor pode até ser besta mas estou começando agora então estou meio perdido…
Meu programa tem um painel com um botão pra adicionar novos painéis a esse painel.
e pra isso eu criei outra classe chamada CriaPaineis.
cada novo painel a ser adicionado tem 3 botões 1 checkbox e 2 textfields…
O Problema é que eu não sei fazer com que as duas classes se conversem já que os painéis só são criados quando o usuário clica no botão. e cada botão do novo painel tem que responder aos eventos da classe.
eu pensei em fazer também
public void actionPerformed(ActionEvent e) {
if (e.getSource() == botao){
pnlSequencia.add(new CriaPaineis);
e definir o colocar o action listener na classe CriaPaineis dai eu consigo criar mais que uma instancia e fazer que os botões respondam, mas não consigo excluir os painéis da tela.
pensei em levar o arraylist pra outra classe tb, mas não tenho como levar ele pra outra classe dps e colocar os objetos…
código:
// classe Tela
public class Tela extends JFrame implements ActionListener{
private JPanel pnlSequencia = null;
private JLabel lblSequencia = null;
private JButton botao = null;
private ArrayList<JPanel> lista = null;
private CriaPaineis objPainel = null;
public Tela(){
initPrincipal();
}
private void initPrincipal(){
objPainel = new CriaPaineis();
objPainel.getBtnExcluir().addActionListener(this);
lista = new ArrayList<>();
lblSequencia = new JLabel("Sequência de arquivos");
botao = new JButton("Novo Arquivo");
botao.addActionListener(this);
pnlSequencia = new JPanel();
pnlSequencia.setLayout(new BoxLayout(pnlSequencia,BoxLayout.Y_AXIS));
pnlSequencia.setPreferredSize(new Dimension(500, 625));
pnlSequencia.setBorder(BorderFactory.createTitledBorder("Painel Sequência"));
pnlSequencia.add(lblSequencia);
pnlSequencia.add(botao);
}
private void novoArquivo(CriaPaineis obj){
lista.add(obj);
pnlSequencia.add(obj);
pnlSequencia.validate();
}
private void exclui(CriaPaineis obj){
lista.remove(obj);
pnlSequencia.remove(obj);
pnlSequencia.validate();
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == botao){
novoArquivo(objPainel);
}else if (e.getSource() == objPainel.getBtnExcluir()){
exclui(objPainel);
}
}
}
// classe CriaPaineis
public class CriaPaineis extends JPanel{
private JButton btnExecutar, btnEditar, btnExcluir;
private JCheckBox autoExecucao;
private JTextField titulo, nomeArquivo;
private GridBagLayout layout;
private GridBagConstraints cons;
public CriaPaineis(){
cons = new GridBagConstraints();
layout = new GridBagLayout();
this.setSize(450, 200);
this.setLayout(layout);
btnExecutar = new JButton("Executar");
btnEditar = new JButton("Editar");
btnExcluir = new JButton("Excluir");
autoExecucao = new JCheckBox("Auto-Executar");
titulo = new JTextField("Título"); titulo.setEditable(false);
titulo.setSize(300, 35);
nomeArquivo = new JTextField("nome do Arquivo"); nomeArquivo.setEditable(false);
nomeArquivo.setSize(300, 35);
cons.gridx = 0; cons.gridy = 0; cons.gridwidth = 3; cons.gridheight = 1;
layout.setConstraints(titulo, cons);
cons.gridy = 1;
layout.setConstraints(nomeArquivo, cons);
cons.gridx = 0; cons.gridy = 2; cons.gridwidth = 1;
layout.setConstraints(autoExecucao, cons);
cons.gridx = 1;
layout.setConstraints(btnExecutar, cons);
cons.gridx = 2;
layout.setConstraints(btnEditar, cons);
cons.gridx = 3;
layout.setConstraints(btnExcluir, cons);
add(titulo); add(nomeArquivo); add(autoExecucao);
add(btnExecutar); add(btnEditar); add(btnExcluir);
}
public JButton getBtnExcluir(){
return btnExcluir;
}
}