您的位置:首页 > 编程语言 > Java开发

java 卡片布局

2014-04-22 21:24 232 查看
卡片布局

就是卡片一张接着一张的显示

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

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: