Java Swing面板布局之卡片布局CardLayout |
您所在的位置:网站首页 › 服务卡片怎么设置大小模式的切换 › Java Swing面板布局之卡片布局CardLayout |
一、简介 卡片布局能够让多个组件共享同一个显示空间,共享空间的组件之间的关系就像一叠牌,组件叠在一起,初始时显示该空间中第一个添加的组件,通过CardLayout类提供的方法可以切换该空间中显示的组件。 可以通过调用CardLayout的next方法翻转到指定容器的下一张卡片,如果当前的可见卡片是最后一个,则翻转到布局的第一张卡片。同样也可以使用previous方法翻转到指定容器的前一张卡片。除了这两个方法,还有last、first方法可以翻转到最后一张、第一张卡片,我们也可以直接使用show方法翻转到指定名称的卡片。 二、构造函数 //组件距容器左右边界和上下边界的距离为缺省值0个像素 public CardLayout(); //组件距容器左右边界和上下边界的距离为指定值 public CardLayout(int hgap, int vgap); 三、类及常用方法 //翻转到容器的第一张卡片 public void first(Container parent) //翻转到容器的最后一张卡片 public void last(Container parent) //翻转到容器的前一张卡片 public void previous(Container parent) //翻转倒容器的后一张卡片 public void next(Container parent) //显示指定名称的卡片 public void show(Container parent, String name) public int getHgap() public void setHgap(int hgap) public int getVgap() public void setVgap(int vgap) 四、举例 import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Color; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class CardLayout02 extends JFrame { private static final long serialVersionUID = 1L; // 主要的JPanel,该JPanel的布局管理将被设置成CardLayout private JPanel cardPanel = null; // CardLayout布局管理器 private CardLayout card = null; // 放按钮的JPanel private JPanel btnPanel = null; private JButton btn_previous = null; // 上一个 private JButton btn_next = null; // 下一个 private JButton b_1 = null, b_2 = null, b_3 = null; // 三个可直接翻转到JPanel组件的按钮 private JPanel p_1 = null, p_2 = null, p_3 = null; // 要切换的三个JPanel public CardLayout02() { super("CardLayout Test"); /** 创建一个具有指定的水平和垂直间隙的新卡片布局 */ card = new CardLayout(5, 5); cardPanel = new JPanel(card); // JPanel的布局管理将被设置成CardLayout p_1 = new JPanel(); p_2 = new JPanel(); p_3 = new JPanel(); p_1.setBackground(Color.RED); p_2.setBackground(Color.ORANGE); p_3.setBackground(Color.GREEN); p_1.add(new JLabel("JPanel_1")); p_2.add(new JLabel("JPanel_2")); p_3.add(new JLabel("JPanel_3")); cardPanel.add(p_1, "p1"); cardPanel.add(p_2, "p2"); cardPanel.add(p_3, "p3"); btnPanel = new JPanel(); // 构造放按钮的JPanel btn_previous = new JButton("< 上一个"); btn_next = new JButton("下一个 >"); b_1 = new JButton("1"); b_2 = new JButton("2"); b_3 = new JButton("3"); b_1.setMargin(new Insets(2, 2, 2, 2)); b_2.setMargin(new Insets(2, 2, 2, 2)); b_3.setMargin(new Insets(2, 2, 2, 2)); btnPanel.add(btn_previous); btnPanel.add(b_1); btnPanel.add(b_2); btnPanel.add(b_3); btnPanel.add(btn_next); /** 下面是翻转到卡片布局的某个组件,可参考API中的文档 */ btn_previous.addActionListener(new ActionListener() { // 上一步的按钮动作 public void actionPerformed(ActionEvent e) { card.previous(cardPanel); } }); btn_next.addActionListener(new ActionListener() { // 下一步的按钮动作 public void actionPerformed(ActionEvent e) { card.next(cardPanel); } }); b_1.addActionListener(new ActionListener() { // 直接翻转到p_1 public void actionPerformed(ActionEvent e) { card.show(cardPanel, "p1"); } }); b_2.addActionListener(new ActionListener() { // 直接翻转到p_2 public void actionPerformed(ActionEvent e) { card.show(cardPanel, "p2"); } }); b_3.addActionListener(new ActionListener() { // 直接翻转到p_3 public void actionPerformed(ActionEvent e) { card.show(cardPanel, "p3"); } }); this.getContentPane().add(cardPanel); this.getContentPane().add(btnPanel, BorderLayout.SOUTH); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(300, 200); this.setVisible(true); } public static void main(String[] args) { new CardLayout02(); } }
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |