如何在一个面板中切换里面的2个不同的面板(panel)
时间: 2024-02-29 15:51:29 浏览: 146
labview2个子面板切换使用
在一个面板中切换里面的两个不同的面板,你可以使用 `CardLayout` 来实现。
首先,你需要创建一个 `JPanel` 作为容器,然后在这个容器中添加两个不同的面板。接着,你可以使用 `CardLayout` 来管理这两个面板,使得只有一个面板处于可见状态。
下面是一个简单的例子:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CardLayoutDemo extends JFrame implements ActionListener {
JPanel cardPanel; // 容器面板
JPanel panel1, panel2; // 两个子面板
JButton button1, button2; // 切换按钮
CardLayout cardLayout; // CardLayout 布局管理器
public CardLayoutDemo() {
cardPanel = new JPanel(); // 创建容器面板
cardLayout = new CardLayout(); // 创建 CardLayout 布局管理器
cardPanel.setLayout(cardLayout); // 设置容器面板的布局管理器
// 创建两个子面板
panel1 = new JPanel();
panel1.setBackground(Color.RED);
panel2 = new JPanel();
panel2.setBackground(Color.BLUE);
// 把两个子面板添加到容器面板中
cardPanel.add(panel1, "panel1");
cardPanel.add(panel2, "panel2");
// 创建切换按钮
button1 = new JButton("Panel 1");
button1.addActionListener(this);
button2 = new JButton("Panel 2");
button2.addActionListener(this);
// 把切换按钮添加到窗口中
JPanel buttonPanel = new JPanel();
buttonPanel.add(button1);
buttonPanel.add(button2);
getContentPane().add(buttonPanel, BorderLayout.SOUTH);
// 把容器面板添加到窗口中
getContentPane().add(cardPanel, BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button1) {
// 切换到 panel1
cardLayout.show(cardPanel, "panel1");
} else if (e.getSource() == button2) {
// 切换到 panel2
cardLayout.show(cardPanel, "panel2");
}
}
public static void main(String[] args) {
CardLayoutDemo frame = new CardLayoutDemo();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
frame.setVisible(true);
}
}
```
在这个例子中,我们创建了一个容器面板 `cardPanel`,并在其中添加了两个子面板 `panel1` 和 `panel2`。然后,我们创建了两个切换按钮 `button1` 和 `button2`,并在 `actionPerformed` 方法中使用 `CardLayout` 布局管理器来切换两个子面板的可见状态。最后,我们把容器面板和按钮添加到窗口中,并显示窗口。
阅读全文