Boa Tarde a todos.
Estou com um problema e já tentei de varias maneiras, mas nenhuma deu certo. Eu gostaria de ao clicar em um botão, seu evento selecionar qual dos JPanels irão aparecer no centro do BorderLayout.
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JOptionPane;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.FlowLayout;
import java.awt.Container;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class Tela extends JFrame implements ActionListener{
private BorderLayout borderLayout;
private FlowLayout flowLayout;
private GridLayout gridLayout;
private Container container;
private JPanel jpCima;
private JLabel jlbPF;
private JButton jbPF;
private JLabel jlbPJ;
private JButton jbPJ;
private JPanel jpCentro;
private JLabel jlbPeF;
private JLabel jlbPeFi;
private JLabel jlbNome;
private JTextField jtfNome;
private JLabel jlbRG;
private JTextField jtfRG;
private JLabel jlbAAA;
private JTextField jtfAAA;
private JLabel jlbBBB;
private JTextField jtfBBB;
private JLabel jlbCCC;
private JTextField jtfCCC;
private JLabel jlbDDD;
private JTextField jtfDDD;
private JPanel jpEsquerda;
private JLabel jlbEEE;
private JTextField jtfEEE;
private JLabel jlbFFF;
private JTextField jtfFFF;
private JLabel jlbGGG;
private JTextField jtfGGG;
private JLabel jlbHHH;
private JTextField jtfHHH;
private JPanel jpBaixo;
private JButton jbCadastrar;
private JButton jbVoltar;
public boolean aux;
public Tela(){
iniciaTela();
jpCima();
jpBaixo();
jpCentro();
jpEsquerda();
//jpDireita();
configComponentes();
}
public void iniciaTela(){
setTitle("Tela");
//pack();
setSize(350,200);
setLocationRelativeTo(null);
setResizable(false);
setVisible(true);
validate();
}
public void jpCima(){
jpCima = new JPanel();
jlbPF = new JLabel("Pessoa Fisica");
jbPF = new JButton("PF");
jbPF.addActionListener(this);
jlbPJ = new JLabel("Pessoa Juridica");
jbPJ = new JButton("PJ");
jbPJ.addActionListener(this);
flowLayout = new FlowLayout();
jpCima.setLayout(flowLayout);
jpCima.add(jlbPF);
jpCima.add(jbPF);
jpCima.add(jlbPJ);
jpCima.add(jbPJ);
jpCima.setVisible(true);
}
public void jpBaixo(){
jpBaixo = new JPanel();
jbCadastrar = new JButton("Cadastrar");
jbCadastrar.addActionListener(this);
jbVoltar = new JButton("Voltar");
jbVoltar.addActionListener(this);
flowLayout = new FlowLayout();
jpBaixo.setLayout(flowLayout);
jpBaixo.add(jbCadastrar);
jpBaixo.add(jbVoltar);
jpBaixo.setVisible(false);
}
public void jpCentro(){
jpCentro = new JPanel();
jlbPeF = new JLabel("PESSOA ", JLabel.RIGHT);
jlbPeFi = new JLabel("FÍSICA", JLabel.LEFT);
jlbNome = new JLabel("Nome", JLabel.CENTER);
jtfNome = new JTextField(10);
jlbRG = new JLabel("RG", JLabel.CENTER);
jtfRG = new JTextField(10);
jlbAAA = new JLabel("CPF", JLabel.CENTER);
jtfAAA = new JTextField(10);
jlbBBB = new JLabel("Endereço", JLabel.CENTER);
jtfBBB = new JTextField(10);
jlbCCC = new JLabel("CEP", JLabel.CENTER);
jtfCCC = new JTextField(10);
jlbDDD = new JLabel("Telefone", JLabel.CENTER);
jtfDDD = new JTextField(10);
gridLayout = new GridLayout(8,2,0,0);
jpCentro.setLayout(gridLayout);
jpCentro.add(jlbPeF);
jpCentro.add(jlbPeFi);
jpCentro.add(jlbNome);
jpCentro.add(jtfNome);
jpCentro.add(jlbRG);
jpCentro.add(jtfRG);
jpCentro.add(jlbAAA);
jpCentro.add(jtfAAA);
jpCentro.add(jlbBBB);
jpCentro.add(jtfBBB);
jpCentro.add(jlbCCC);
jpCentro.add(jtfCCC);
jpCentro.add(jlbDDD);
jpCentro.add(jtfDDD);
jpCentro.setVisible(false);
}
public void jpEsquerda(){
jpEsquerda = new JPanel();
jlbEEE = new JLabel("Nome");
jtfEEE = new JTextField(15);
jlbFFF = new JLabel("RG");
jtfFFF = new JTextField(15);
jlbGGG = new JLabel("CNPJ");
jtfGGG = new JTextField(15);
jlbHHH = new JLabel("Nome da Empresa");
jtfHHH = new JTextField(15);
gridLayout = new GridLayout(8,2,0,0);
jpEsquerda.setLayout(gridLayout);
jpEsquerda.add(jlbEEE);
jpEsquerda.add(jtfEEE);
jpEsquerda.add(jlbFFF);
jpEsquerda.add(jtfFFF);
jpEsquerda.add(jlbGGG);
jpEsquerda.add(jtfGGG);
jpEsquerda.add(jlbHHH);
jpEsquerda.add(jtfHHH);
jpEsquerda.setVisible(false);
}
/*
public void jpDireita(){
}
*/
public void msg(){
JOptionPane.showMessageDialog(null, "Cliente Cadastrado com Sucesso!");
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == jbPF){
aux = true;
//container.add(jpCentro, BorderLayout.CENTER);
jpCentro.setVisible(true);
//jpEsquerda.setVisible(false);
jpBaixo.setVisible(true);
jpCima.setVisible(false);
validate();
}
else if(e.getSource() == jbPJ){
aux = false;
jpEsquerda.setVisible(true);
//jpCentro.setVisible(false);
jpBaixo.setVisible(true);
jpCima.setVisible(false);
validate();
}
else if(e.getSource() == jbCadastrar){
jpCentro.setVisible(false);
jpEsquerda.setVisible(false);
jpBaixo.setVisible(false);
jpCima.setVisible(true);
msg();
validate();
}
else if(e.getSource() == jbVoltar){
jpCentro.setVisible(false);
jpEsquerda.setVisible(false);
jpBaixo.setVisible(false);
jpCima.setVisible(true);
validate();
}
/*
if(btPF.isSelected()){
container.add(jpCentro, BorderLayout.CENTER);
}
else if(btPJ.isSelected()){
container.add(jpEsquerda, BorderLayout.CENTER);//EAST
}
*/
}
public void configComponentes(){
container = getContentPane();
borderLayout = new BorderLayout();
setLayout(borderLayout);
container.add(jpCima, BorderLayout.NORTH);
container.add(jpCentro, BorderLayout.CENTER);
container.add(jpEsquerda, BorderLayout.EAST);//EAST
container.add(jpBaixo, BorderLayout.SOUTH);
validate();
/* if(aux == true){
container.add(jpCentro, BorderLayout.CENTER);
}
if(aux == false){
container.add(jpEsquerda, BorderLayout.CENTER);//EAST
}
*/
}
}
import javax.swing.*;
public class Main{
public static void main(String[]args){
Tela tela = new Tela();
tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
P.s: O campo para setar o JPanel que teria que aparecer no centro do BorderLayout está comentado. Acredito que o erro esteja ali, mas não pensei em nenhuma outra maneira de ajustar isso.