Tenho uma classe que gera uma das abas de um JTabbedPane.
Essa aba deve ser composta de 5 botões (JButton) e um JPanel. Preciso que esse JPanel seja atualizado de acordo com o botão clicado.
Na classe abaixo eu criei os botões e consegui alterar o fundo do JPanel de acordo com o botão:
package br.com.progold.core;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class AbaConf extends JPanel {
private JPanel buttonPanel;
private JButton cfopButton;
private JButton msgButton;
private JButton taxaButton;
private JButton icmsButton;
private JButton certButton;
private JPanel mainPanel;
private static final long serialVersionUID = 1L;
public AbaConf(){
super();
setLayout(null);
adicionarComponentes();
}
private void adicionarComponentes() {
buttonPanel = new JPanel(new GridLayout(1, 5));
buttonPanel.setBounds(0, 0, 1010, 30);
cfopButton = new JButton("CFOP");
cfopButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mainPanel.setBackground(new Color(255, 255, 0));
mainPanel.repaint();
}
});
msgButton = new JButton("MENSAGEM");
msgButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mainPanel.setBackground(new Color(0, 255, 255));
mainPanel.repaint();
}
});
taxaButton = new JButton("TAXAS");
taxaButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mainPanel.setBackground(new Color(0, 255, 0));
mainPanel.repaint();
}
});
icmsButton = new JButton("ICMS");
icmsButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mainPanel.setBackground(new Color(0, 0, 255));
mainPanel.repaint();
}
});
certButton = new JButton("CERTIFICADOS");
certButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mainPanel.setBackground(new Color(255, 0, 255));
mainPanel.repaint();
}
});
buttonPanel.add(cfopButton);
buttonPanel.add(msgButton);
buttonPanel.add(taxaButton);
buttonPanel.add(icmsButton);
buttonPanel.add(certButton);
this.add(buttonPanel);
mainPanel = new JPanel();
mainPanel.setBackground(new Color(255,0,0));
mainPanel.setBounds(0, 31, 1010, 680);
this.add(mainPanel);
}
}
Como funcionou até aqui, criei 5 novas classes (todas extendendo o JPanel), dentro delas só coloquei um JLabel com o texto de cada botão (só pra teste) e alterei o ActionListener dos botões para isso:
cfopButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mainPanel = new PanelCfop();
mainPanel.repaint();
}
});
Mas dessa forma não acontece nada. Também tentei criar um novo JPanel e adiciona-lo ao mainPanel, mas tb não funcionou.
Alguém sabe como resolvo isso?