黑马程序员技术交流社区
标题:
关于卡片布局管理器的使用
[打印本页]
作者:
戴振良
时间:
2012-3-17 00:15
标题:
关于卡片布局管理器的使用
本帖最后由 戴振良 于 2012-3-27 17:42 编辑
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class CardLayoutTest extends JFrame implements ActionListener {
JButton btnFirst=new JButton("第一张卡片0");//创建按钮
JButton btnPrevious=new JButton("上一张卡片");
JButton btnMiddle=new JButton("中间卡片25");
JButton btnNext=new JButton("下一张卡片");
JButton btnLast=new JButton("最后一张卡片50");
JPanel panel=new JPanel(); //创建面板容器
CardLayout cardLayout=new CardLayout(); //创建卡片布局管理器
public CardLayoutTest() {
this.setLayout(null); //设置窗体不使用布局管理器
panel.setLayout(cardLayout);//设置Jpanel容器使用卡片布局管理器
this.setBounds(200, 200, 300, 220); //设置窗体的位置和大小
panel.setBounds(10, 40, 100, 100); //设置面板容器的位置和大小
btnFirst.setBounds(120,15,150,20); //设置按钮的位置和大小
btnPrevious.setBounds(120, 45, 150, 20);
btnMiddle.setBounds(120, 75, 150, 20);
btnNext.setBounds(120, 105, 150, 20);
btnLast.setBounds(120,135, 150, 20);
btnFirst.addActionListener(this); //注册按钮监听器
btnPrevious.addActionListener(this);
btnMiddle.addActionListener(this);
btnNext.addActionListener(this);
btnLast.addActionListener(this);
for(int i=0;i<51;i++) {//通过循环给panel容器增加51个按钮组件
JButton jb=new JButton("卡片"+i);//----------------------------------------------------->代码1
jb.addActionListener(this);
panel.add(jb,""+i);//-------------------------------------------------------------------------->代码2
}
this.add(panel); //添加面板容器到窗体
this.add(btnFirst); //添加按钮到窗体
this.add(btnPrevious);
this.add(btnMiddle);
this.add(btnNext);
this.add(btnLast);
this.setVisible(true); //显示窗体
}
//实现ActionListener接口的类必覆盖下面的方法
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btnFirst) {
cardLayout.first(panel);
} else if(e.getSource()==btnPrevious) {
cardLayout.previous(panel);
} else if(e.getSource()==btnNext) {
cardLayout.next(panel);
} else if(e.getSource()==btnLast) {
cardLayout.last(panel);
} else if(e.getSource()==btnMiddle){
cardLayout.show(panel,"25");
}
}
public static void main(String[] args) {
new CardLayoutTest();
}
}
//问题1:代码1处的JPanel.add方法,我在jdk找不到这样需要两个参数的方法(一个组件参数,一个字符串参数)
//问题2:JPanel.add方法明明有只要一个参数的方法(只需组件),我试过把代码2后面的字符串(""+i)参数删掉,
//编译时没有错,运行就报错,不知道是什么原因,而奇怪的是我删除代码1处的(""+i)又不会报错
//问题3:我把代码2处的"+i"删除之后,运行时点击“中间数字25”这个按钮时不会显示25,而其他按钮功能正常,怎么回事呢?
//问题4:我把代码1处的"+i"删除之后,运行时点任何按钮都不会显示数字,那代码2的i是干嘛用的呢?
//Jframe窗体默认的布局管理器是什么?
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2