卡片布局
就是卡片一张接着一张的显示
package zixue;
/*
* 功能:卡布布局简单案例,其中用面板来存放卡片,面板相当于实际中的卡片盒,用于存放卡片
*其中,把需要的图片新建一个文件夹存放即可调用
* */
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class CardLayout_1 extends JFrame implements ActionListener{
//定义卡片布局的相关组件
CardLayout c1;//这样定义是为了后面卡片的切换时调用c1的方法
JPanel jp1;//用于设置卡片布局的面板
JPanel jp2;//用于放置标签的面板
JButton jb1,jb2;
JLabel jl1,jl2,jl3;
public static void main(String[] args) {
// TODO Auto-generated method stub
CardLayout_1 card =new CardLayout_1();
}
public CardLayout_1()
{
//创建组件
//创建一个卡片布局对象
c1=new CardLayout();
//创建用于点击显示卡片的按钮
jb1=new JButton("卡片1");
//添加监听
jb1.addActionListener(this);
jb2=new JButton("卡片2");
jb2.addActionListener(this);
//创建图片标签,也就是卡片
jl1=new JLabel(new ImageIcon("image/qq.gif"));
jl2=new JLabel(new ImageIcon("image/mm.jpg"));
jp1=new JPanel();
jp2=new JPanel();
//设置面板jp1为卡片布局
jp1.setLayout(c1);
//给jp1添加卡片,默认显示最上面的那张卡片
jp1.add(jl1,"1");
jp1.add(jl2,"2");
jp2.add(jb1,BorderLayout.NORTH);
jp2.add(jb2,BorderLayout.CENTER);
//添加到窗体
this.add(jp1,BorderLayout.NORTH);
this.add(jp2,BorderLayout.SOUTH);
//设置窗体属性
this.setTitle("卡片布局");
this.setSize(300,150);
this.setBackground(Color.green);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(arg0.getSource()==jb1)
{
//通过卡片布局对象显示jp1面板上的卡号为2的卡片
c1.show(jp1, "2");
}
else if(arg0.getSource()==jb2)
{
c1.show(jp1, "1");
}
}
}
1 将需要卡片显示的内容加入一个容器中
如本例中jp1
2并将其设置为卡片布局
c1=new CardLayout();
jp1.setLayout(c1);
jp1.add(jl1,"1");
jp1.add(jl2,"2");
3 在需要用的时候,只需要触发相应的动作就可以了。
package zixue;
/*
* 功能:卡布布局简单案例,其中用面板来存放卡片,面板相当于实际中的卡片盒,用于存放卡片
*其中,把需要的图片新建一个文件夹存放即可调用
* */
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class CardLayout_1 extends JFrame implements ActionListener ,MouseListener{
//定义卡片布局的相关组件
CardLayout c1;//这样定义是为了后面卡片的切换时调用c1的方法
JPanel jp1;//用于设置卡片布局的面板
JPanel jp2;//用于放置标签的面板
JButton jb1,jb2;
JLabel jl1,jl2,jl3;
public static void main(String[] args) {
// TODO Auto-generated method stub
CardLayout_1 card =new CardLayout_1();
}
public CardLayout_1()
{
//创建组件
//创建一个卡片布局对象
c1=new CardLayout();
//创建用于点击显示卡片的按钮
jb1=new JButton("卡片1");
jb1.addMouseListener(this);
//添加监听
jb1.addActionListener(this);
jb2=new JButton("卡片2");
jb2.addActionListener(this);
jb2.addMouseListener(this);
//创建图片标签,也就是卡片
jl1=new JLabel(new ImageIcon("image/qq.gif"));
jl2=new JLabel(new ImageIcon("image/mm.jpg"));
jp1=new JPanel();
jp2=new JPanel();
//设置面板jp1为卡片布局
jp1.setLayout(c1);
//给jp1添加卡片,默认显示最上面的那张卡片
jp1.add(jl1,"1");
jp1.add(jl2,"2");
jp2.add(jb1,BorderLayout.NORTH);
jp2.add(jb2,BorderLayout.CENTER);
//添加到窗体
this.add(jp1,BorderLayout.NORTH);
this.add(jp2,BorderLayout.SOUTH);
//设置窗体属性
this.setTitle("卡片布局");
this.setSize(300,150);
this.setBackground(Color.green);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(arg0.getSource()==jb1)
{
//通过卡片布局对象显示jp1面板上的卡号为2的卡片
c1.show(jp1, "2");
}
else if(arg0.getSource()==jb2)
{
c1.show(jp1, "1");
}
}
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==jb1){
c1.show(jp1, "2");
}else if(e.getSource()==jb2){
c1.show(jp1, "1");
}
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
}