Ниже приведен пример того, как это сделать:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
class PanelA extends JPanel implements ActionListener {
private JCheckBox shopBox;
private PanelB panelB;
PanelA() {
shopBox = new JCheckBox();
shopBox.addActionListener(this);
add(shopBox);
setSize(100, 100);
}
public PanelB getPanelB() {
return panelB;
}
public void setPanelB(PanelB panelB) {
this.panelB = panelB;
this.panelB.setVisible(shopBox.isSelected());
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLACK);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == shopBox) {
panelB.setVisible(shopBox.isSelected());
}
}
}
class PanelB extends JPanel {
PanelB() {
setSize(100, 100);
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
}
}
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(1000, 1000);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridLayout());
PanelA pa = new PanelA();
PanelB pb = new PanelB();
frame.add(pa);
frame.add(pb);
pa.setPanelB(pb);
frame.setVisible(true);
}
}
Не стесняйтесь комментировать в случае любой проблемы / сомнения.