- 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窗体默认的布局管理器是什么?
复制代码 |
|