javaSwing的卡片布局
时间: 2023-10-16 10:10:38 浏览: 90
Java Swing CardLayout卡片布局的实现示例
Java Swing 的卡片布局(CardLayout)是一种容器布局,它可以在同一区域内显示多个组件,但每次只能显示其中的一个组件。
下面是一个简单的 Java Swing 卡片布局示例:
```java
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class CardLayoutExample implements ActionListener {
JPanel cards;
final static String BUTTONPANEL = "Button Panel";
final static String TEXTPANEL = "Text Panel";
public void addComponentToPane(Container pane) {
JPanel buttonPanel = new JPanel();
buttonPanel.setBackground(Color.WHITE);
buttonPanel.add(new JButton("Button 1"));
buttonPanel.add(new JButton("Button 2"));
buttonPanel.add(new JButton("Button 3"));
JPanel textPanel = new JPanel();
textPanel.setBackground(Color.WHITE);
textPanel.add(new JButton("Text Area"));
cards = new JPanel(new CardLayout());
cards.add(buttonPanel, BUTTONPANEL);
cards.add(textPanel, TEXTPANEL);
pane.add(cards);
}
public void actionPerformed(ActionEvent e) {
CardLayout cl = (CardLayout) (cards.getLayout());
cl.next(cards);
}
public static void createAndShowGUI() {
JFrame frame = new JFrame("CardLayoutExample");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
CardLayoutExample demo = new CardLayoutExample();
demo.addComponentToPane(frame.getContentPane());
JButton button = new JButton("Switch to Text Panel");
button.addActionListener(demo);
frame.add(button, "South");
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
```
在上面的代码中,我们创建了两个 JPanel,分别是 buttonPanel 和 textPanel,然后创建了一个 cards JPanel,并使用 CardLayout 将这两个面板添加到 cards 中。最后,我们创建了一个带有 "Switch to Text Panel" 按钮的 JFrame,并将 cards 添加到 JFrame 中。当用户单击按钮时,我们调用 CardLayout 的 next() 方法以显示下一个面板。
通过使用卡片布局,我们可以轻松创建一个多面板的用户界面,每个面板都可以包含不同的组件。
阅读全文