📄 cardlayoutdemo.java
字号:
package carddemo;
import java.awt.BorderLayout;
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.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
public class CardLayoutDemo implements ActionListener {
public CardLayoutDemo() {
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
JPanel cards; //使用 CardLayout 的面板
final static String[] strings = {"组件 1", "组件 2 太长从而使容器变宽", "组件 3"};
private static JComponent createComponent(String s) {
JLabel lblComponent = new JLabel(s);
lblComponent.setBorder(BorderFactory.createMatteBorder(5,5,5,5,
Color.DARK_GRAY));
lblComponent.setHorizontalAlignment(JLabel.CENTER);
return lblComponent;
}
public void addCardsToPane(Container pane) {
JRadioButton[] radComponent = new JRadioButton[strings.length];
ButtonGroup group = new ButtonGroup();
JPanel pnlButtons = new JPanel();
pnlButtons.setLayout(new BoxLayout(pnlButtons, BoxLayout.PAGE_AXIS));
for (int i= 0; i < strings.length; i++) {
radComponent[i] = new JRadioButton("显示组件 #" + (i+1));
radComponent[i].setActionCommand(String.valueOf(i));
radComponent[i].addActionListener(this);
group.add(radComponent[i]);
pnlButtons.add(radComponent[i]);
}
radComponent[0].setSelected(true);
//创建含有“卡片”的面板
cards = new JPanel(new CardLayout());
for (int i = 0; i < strings.length; i++) {
cards.add(createComponent(strings[i]), String.valueOf(i));
}
pane.add(pnlButtons, BorderLayout.NORTH);
pane.add(cards, BorderLayout.CENTER);
}
//编写以下代码,单击单选按钮时可显示适当的卡片:
public void actionPerformed(ActionEvent evt) {
CardLayout cardObj = (CardLayout)(cards.getLayout());
cardObj.show(cards, (String)evt.getActionCommand());
}
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frmCard = new JFrame();
frmCard.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
CardLayoutDemo demo = new CardLayoutDemo();
demo.addCardsToPane(frmCard.getContentPane());
frmCard.pack();
frmCard.setVisible(true);
}
private void jbInit() throws Exception {
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -