Olá, eu gostaria de saber como que eu faço pra quando eu clicar no botao de listar ele deverá abrir uma só vez o JTable e não ficar adicionando várias tabelas dentro do panel de listar toda vez que eu clicar em listar, e quando eu volto a clicar no botao cadastrar ele não mostra a janela de cadastro… E também gostaria de saber como eu faço para armazenar os dados na JTable. Segue o código abaixo:
import javax.print.attribute.standard.JobMessageFromOperator;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.;
import java.awt.event.;
import java.util.Collections;
import java.util.Vector;
public class CardDeck extends JFrame implements ActionListener {
private CardLayout cardManager;
private JPanel deck, panMasc;
private JButton controls[];
private String names[] = { “Cadastrar”, “Listar”,
“Consultar”, “Pesquisar”,“Sair” };
private JRadioButton mascButton, femButton;
private ButtonGroup group;
private JPanel panel,panel2, panListMasc;
private JTextField nomeCampo, idadeCampo, cpfCampo, dataCampo, estCampo, criCampo, qtdCampo;
private String nome, idade, cpf, data, estCivil, criancas, qtdGravida;
private JButton butaoOk;
private JFrame frame;
private Vector homem;
private Vector mulher;
public CardDeck()
{
frame = new JFrame( "CardLayout " );
Container c = frame.getContentPane();
panel = new JPanel();
panel2 = new JPanel();
deck = new JPanel();
cardManager = new CardLayout();
deck.setLayout( cardManager );
homem = new Vector();
mulher = new Vector();
panMasc = new JPanel();
//Monta o primeiro botão;
montaBotao(new JLabel("Cadastrar") , panel, deck);
montaJanelaCadastrar(panel);
//Monta o segundo botão;
montaBotao(new JLabel("Listar") , panel2, deck);
panel2.setLayout(new GridLayout(2,1));
montaJanelaListarMasc(panel2);
montaJanelaListarFem(panel2);
//montaJanelaListar(panel2);
//Monta o terceiro botão
montaBotao(new JLabel("Consultar") , new JPanel(), deck);
//Monta o quarto botao
montaBotao(new JLabel("Pesquisar") , new JPanel(), deck);
//Monta o quinto botao
montaBotao(new JLabel("Sair") , new JPanel(), deck);
JPanel buttons = new JPanel();
buttons.setLayout( new GridLayout( 5, 1 ) );
controls = new JButton[ names.length ];
for ( int i = 0; i < controls.length; i++ ) {
controls[ i ] = new JButton( names[ i ] );
controls[ i ].addActionListener( this );
buttons.add( controls[ i ] );
}
c.add( buttons, BorderLayout.WEST );
c.add( deck, BorderLayout.EAST );
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public void montaBotao(JLabel label, JPanel panel, JPanel deck)
{
deck.add( panel, label.getText());
}
public void actionPerformed( ActionEvent e )
{
if ( e.getSource() == controls[ 0 ] )
cardManager.show(deck,“Cadastrar”);
else if ( e.getSource() == controls[ 1 ] )
{
Collections.reverse(homem);
panel2.setLayout(new GridLayout(2,1));
cardManager.show(deck, “Listar”);
}
else if ( e.getSource() == controls[ 2 ] )
{
cardManager.show(deck, “Consultar”);
}
else if ( e.getSource() == controls[ 3 ] )
cardManager.show(deck, "Pesquisar");
else if ( e.getSource() == controls[ 4 ] )
{
cardManager.show(deck, "Sair");
System.exit(0);
}
else if(e.getSource() == mascButton)
{
panMasc.setVisible(true);
estCampo = new JTextField(10);
panMasc.add(new JLabel("Estado Civil:"));
panMasc.add(estCampo);
panel.add(panMasc);
frame.setVisible(true);
//panel.remove(panMasc);
}
else if(e.getSource() == butaoOk)
{
int valida=0;
nome = nomeCampo.getText();
if(nome.isEmpty() == true)
{
JOptionPane.showMessageDialog(null, "ERRO! O campo nome deve ser preenchido!");
valida++;
}
idade = idadeCampo.getText();
if(idade.isEmpty() == true)
{
JOptionPane.showMessageDialog(null, "ERRO! O campo idade deve ser preenchido!");
valida++;
}
data = dataCampo.getText();
if(data.isEmpty() == true)
{
JOptionPane.showMessageDialog(null, "ERRO! O campo data deve ser preenchido!");
valida++;
}
cpf = cpfCampo.getText();
if(cpf.isEmpty() == true)
{
JOptionPane.showMessageDialog(null, "ERRO! O campo cpf deve ser preenchido!");
valida++;
}
if((mascButton.isSelected() == false && femButton.isSelected() == false))
{
JOptionPane.showMessageDialog(null, "ERRO! O Radio Button masculino ou feminino deve ser selecionado!");
valida++;
}
if((mascButton.isSelected() == true) && (valida == 0))
{
Masculino masculino = new Masculino();
estCivil = estCampo.getText();
if(estCivil.isEmpty() == true)
JOptionPane.showMessageDialog(null, "ERRO! O campo de estado civil deve ser preenchido!");
masculino.setNome(nome);
masculino.setIdade(idade);
masculino.setData(data);
masculino.setSexo("Masculino");
masculino.setEstCivil(estCivil);
masculino.setCpf(cpf);
estCampo.setText("");
homem.add(masculino);
}
else if(femButton.isSelected() == true)
{
Feminino feminino = new Feminino();
criancas = criCampo.getText();
qtdGravida = qtdCampo.getText();
feminino.setNome(nome);
feminino.setIdade(idade);
feminino.setData(data);
feminino.setCpf(cpf);
feminino.setCriancas(criancas);
feminino.setQtdGravida(qtdGravida);
criCampo.setText("");
qtdCampo.setText("");
mulher.add(feminino);
}
nomeCampo.setText("");
idadeCampo.setText("");
cpfCampo.setText("");
dataCampo.setText("");
cardManager.show(deck, "Cadastrar");
}
}
public static void main( String args[] )
{
CardDeck cardDeckDemo = new CardDeck();
}
public void montaJanelaCadastrar(JPanel panel)
{
mascButton = new JRadioButton(“Masculino”);
femButton = new JRadioButton(“Feminino”);
group = new ButtonGroup();
JPanel panNome = new JPanel();
JPanel panIdade = new JPanel();
JPanel panSexo = new JPanel();
JPanel panOk = new JPanel();
JPanel panCpf = new JPanel();
JPanel panData = new JPanel();
butaoOk = new JButton("OK");
panel.setLayout(new GridLayout(5, 1));
nomeCampo = new JTextField(20);
panNome.add(new JLabel("Nome"));
panNome.add(nomeCampo);
panel.add(panNome);
panIdade.add(new JLabel("Idade"));
idadeCampo = new JTextField(3);
panIdade.add(idadeCampo);
panel.add(panIdade);
panData.add(new JLabel("Data:"));
dataCampo = new JTextField(10);
panData.add(dataCampo);
panel.add(panData);
panCpf.add(new JLabel("CPF"));
cpfCampo = new JTextField(11);
panCpf.add(cpfCampo);
panel.add(panCpf);
panSexo.add(new JLabel("Sexo:"));
panSexo.add(mascButton);
mascButton.addActionListener(this);
panSexo.add(femButton);
group.add(mascButton);
group.add(femButton);
panel.add(panSexo);
panOk.add(new JLabel("Aperte OK para cadastrar outra pessoa"), JFrame.BOTTOM_ALIGNMENT);
butaoOk.addActionListener(this);
panOk.add(butaoOk);
panel.add(panOk);
}
public void montaJanelaListarMasc(JPanel panel2){
final DefaultTableModel modelo = new DefaultTableModel();
JTable tabela = new JTable(modelo);
modelo.addColumn("Nome");
modelo.addColumn("Idade");
modelo.addColumn("Sexo");
modelo.addColumn("CPF");
modelo.addColumn("Data");
modelo.addColumn("Estado Civil");
tabela.setPreferredScrollableViewportSize(new
Dimension(420, 50));
JScrollPane scrollPane = new JScrollPane(tabela);
panel2.add(scrollPane);
setSize(400, 300);
}
public void montaJanelaListarFem(JPanel panel2){
final DefaultTableModel modelo = new DefaultTableModel();
// constrói a tabela
JTable tabela = new JTable(modelo);
// Cria duas colunas
modelo.addColumn("Nome");
modelo.addColumn("Idade");
modelo.addColumn("Sexo");
modelo.addColumn("CPF");
modelo.addColumn("Qtd de vezes que ficou gravida");
modelo.addColumn("Qtd de crianças");
tabela.setPreferredScrollableViewportSize(new
Dimension(600, 50));
//Container c = getContentPane();
//panel2.setLayout(new FlowLayout());
JScrollPane scrollPane = new JScrollPane(tabela);
//c.add();
panel2.add(scrollPane);
setSize(600, 300);
}
}