Conforme imagem abaixo, tenho o seguinte problema e não estou conseguindo implementar.
Tenho o seguinte…
um JInternalFrame,e dois JPanel em classes separadas, uma de listagem de cliente e outra de adicionar cliente.
por questão de estética, me foi solicitado que ao clicar em um botão ou outro, alterne o conteúdo da tela.
inicialmente pensei em alternar a visibilidade dos JPanel.
Alguém já fez algo do tipo, tem algum exemplo p/ compartilhar?
Use um CardLayout, ou melhor ainda, use um JTabbedPane. Exemplo de um CardLayout:
package guj.cardlayout;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class ExemploCardLayout extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JPanel pnlBotoes = null;
private JButton btnProximo = null;
private JButton btnAnterior = null;
private JButton btnPrimeiro = null;
private JButton btnUltimo = null;
private JPanel pnlCardLayout = null;
private ClientesPanel clientesPanel = null;
private VendasPanel vendasPanel = null;
private ContasPanel contasPanel = null;
private JButton btnVendas = null;
/**
* This method initializes pnlBotoes
*
* @return javax.swing.JPanel
*/
private JPanel getPnlBotoes() {
if (pnlBotoes == null) {
pnlBotoes = new JPanel();
pnlBotoes.setLayout(new FlowLayout());
pnlBotoes.add(getBtnProximo(), null);
pnlBotoes.add(getBtnAnterior(), null);
pnlBotoes.add(getBtnPrimeiro(), null);
pnlBotoes.add(getBtnUltimo(), null);
pnlBotoes.add(getBtnVendas(), null);
}
return pnlBotoes;
}
/**
* This method initializes btnProximo
*
* @return javax.swing.JButton
*/
private JButton getBtnProximo() {
if (btnProximo == null) {
btnProximo = new JButton();
btnProximo.setText("Próximo");
btnProximo.setActionCommand("Proximo");
btnProximo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
((CardLayout)pnlCardLayout.getLayout()).next(pnlCardLayout);
}
});
}
return btnProximo;
}
/**
* This method initializes btnAnterior
*
* @return javax.swing.JButton
*/
private JButton getBtnAnterior() {
if (btnAnterior == null) {
btnAnterior = new JButton();
btnAnterior.setText("Anterior");
btnAnterior.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
((CardLayout)pnlCardLayout.getLayout()).previous(pnlCardLayout);
}
});
}
return btnAnterior;
}
/**
* This method initializes btnPrimeiro
*
* @return javax.swing.JButton
*/
private JButton getBtnPrimeiro() {
if (btnPrimeiro == null) {
btnPrimeiro = new JButton();
btnPrimeiro.setText("Primeiro");
btnPrimeiro.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
((CardLayout)pnlCardLayout.getLayout()).first(pnlCardLayout);
}
});
}
return btnPrimeiro;
}
/**
* This method initializes btnUltimo
*
* @return javax.swing.JButton
*/
private JButton getBtnUltimo() {
if (btnUltimo == null) {
btnUltimo = new JButton();
btnUltimo.setText("Último");
btnUltimo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
((CardLayout)pnlCardLayout.getLayout()).last(pnlCardLayout);
}
});
}
return btnUltimo;
}
/**
* This method initializes pnlCardLayout
*
* @return javax.swing.JPanel
*/
private JPanel getPnlCardLayout() {
if (pnlCardLayout == null) {
pnlCardLayout = new JPanel();
pnlCardLayout.setLayout(new CardLayout());
pnlCardLayout.add(getClientesPanel(), getClientesPanel().getName());
pnlCardLayout.add(getVendasPanel(), getVendasPanel().getName());
pnlCardLayout.add(getContasPanel(), getContasPanel().getName());
}
return pnlCardLayout;
}
/**
* This method initializes clientesPanel
*
* @return guj.cardlayout.ClientesPanel
*/
private ClientesPanel getClientesPanel() {
if (clientesPanel == null) {
clientesPanel = new ClientesPanel();
clientesPanel.setName("clientesPanel");
}
return clientesPanel;
}
/**
* This method initializes vendasPanel
*
* @return guj.cardlayout.VendasPanel
*/
private VendasPanel getVendasPanel() {
if (vendasPanel == null) {
vendasPanel = new VendasPanel();
vendasPanel.setName("vendasPanel");
}
return vendasPanel;
}
/**
* This method initializes contasPanel
*
* @return guj.cardlayout.ContasPanel
*/
private ContasPanel getContasPanel() {
if (contasPanel == null) {
contasPanel = new ContasPanel();
contasPanel.setName("contasPanel");
}
return contasPanel;
}
/**
* This method initializes btnVendas
*
* @return javax.swing.JButton
*/
private JButton getBtnVendas() {
if (btnVendas == null) {
btnVendas = new JButton();
btnVendas.setText("Vendas");
btnVendas.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
((CardLayout)pnlCardLayout.getLayout()).show(pnlCardLayout, vendasPanel.getName());
}
});
}
return btnVendas;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SwingUtilities.invokeLater(new Runnable() {
public void run() {
ExemploCardLayout thisClass = new ExemploCardLayout();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
/**
* This is the default constructor
*/
public ExemploCardLayout() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(616, 233);
this.setContentPane(getJContentPane());
this.setTitle("Exemplo de CardLayout");
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getPnlBotoes(), BorderLayout.SOUTH);
jContentPane.add(getPnlCardLayout(), BorderLayout.CENTER);
}
return jContentPane;
}
} // @jve:decl-index=0:visual-constraint="10,10"
package guj.cardlayout;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class ClientesPanel extends JPanel {
private static final long serialVersionUID = 1L;
private JTextField txtClientes = null;
/**
* This is the default constructor
*/
public ClientesPanel() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(300, 200);
this.setLayout(new BorderLayout());
this.add(getTxtClientes(), BorderLayout.CENTER);
}
/**
* This method initializes txtClientes
*
* @return javax.swing.JTextField
*/
private JTextField getTxtClientes() {
if (txtClientes == null) {
txtClientes = new JTextField();
txtClientes.setText("Clientes");
}
return txtClientes;
}
}
package guj.cardlayout;
import java.awt.BorderLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class ContasPanel extends JPanel {
private static final long serialVersionUID = 1L;
private JLabel lblContas = null;
/**
* This is the default constructor
*/
public ContasPanel() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
lblContas = new JLabel();
lblContas.setText("Contas");
this.setSize(300, 200);
this.setLayout(new BorderLayout());
this.add(lblContas, BorderLayout.CENTER);
}
}
package guj.cardlayout;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JPanel;
public class VendasPanel extends JPanel {
private static final long serialVersionUID = 1L;
private JButton btnVendas = null;
/**
* This is the default constructor
*/
public VendasPanel() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(300, 200);
this.setLayout(new BorderLayout());
this.add(getBtnVendas(), BorderLayout.CENTER);
}
/**
* This method initializes btnVendas
*
* @return javax.swing.JButton
*/
private JButton getBtnVendas() {
if (btnVendas == null) {
btnVendas = new JButton();
btnVendas.setText("Vendas");
}
return btnVendas;
}
}