A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡斌 中级黑马   /  2012-11-7 23:49  /  1638 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.applet.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class myPanel extends JPanel{
        int x;
        JLabel j;
        myPanel(int a)
        {
                x=a;
                getSize();
                j=new JLabel("我是第"+x+"个标签");
                add(j);
        }
}
public class Buju extends Applet implements ActionListener{
        CardLayout card;
        myPanel mp[];
        JPanel p;
        private void addButton(JPanel pan,String butName,ActionListener listener)
        {
                JButton a = new JButton(butName);
                a.setActionCommand(butName);//问题1:这句话可有可无,但是显示的图型却不一样,为甚?
                /**
                 * .setActionCommand("good") 这名是设置JButton的动作命令。
这样在ActionListener覆盖的actionPerformed(ActionEvent e)
方法中通过参数e.getActionCommand()可以获取对应的动作命令,
这在一个ActionListener处理多个动作事件时比较有用*/
               
                a.addActionListener(listener);
                pan.add(a);
        }
        public void init()
        {
                setLayout(new BorderLayout());
                card = new CardLayout();
                this.setSize(400,150);
                p = new JPanel();
                p.setLayout(card);
                mp = new myPanel[10];
                for(int i=0;i<10;i++)
                {
                        mp=new myPanel(i+1);
                        p.add("A"+i,mp);//问题2:这里A是什么意思?
                }
                JPanel p2 = new JPanel();
                addButton(p2,"第一个",this);
                addButton(p2,"最后一个",this);
                addButton(p2,"前一个",this);
                addButton(p2,"后一个",this);
                add(p,"Center");
                add(p2,"South");
        }
        public void actionPerformed(ActionEvent e)
        {
                if(e.getActionCommand().equals("第一个"))
                        card.first(p);
                else if(e.getActionCommand().equals("最后一个"))
                        card.last(p);
                else if(e.getActionCommand().equals("前一个"))
                        card.previous(p);
                else if(e.getActionCommand().equals("后一个"))
                        card.next(p);
        }
}


评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
加上a.setActionCommand();显示图形为:

l.jpg (273.47 KB, 下载次数: 36)

l.jpg
回复 使用道具 举报
没加显示为:

1.jpg (179.55 KB, 下载次数: 36)

1.jpg
回复 使用道具 举报
但是展开是对的?why??????????
回复 使用道具 举报
关于AbstractButton 类的getActionCommand()和setActionCommand()是对应的。
也就是说如果你想正常的使用getActionCommand()就必须先setActionCommand,否则肯定出问题

还有这2句话有问题一放到 Eclipse就报错。
mp=new myPanel(i+1);         //mp是一个JmyPanel的数组变量,右边是一个非数组的对象。
                          p.add("A"+i,mp);  // 这里不匹配。。
说实话。LZ。SWING里面我还没仔细 用过CardLayout.。。汗。
在swing里面其实问题很多。 慢慢实践就会发现的。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
陈军 发表于 2012-11-8 10:40
关于AbstractButton 类的getActionCommand()和setActionCommand()是对应的。
也就是说如果你想正常的使 ...

我这个程序是测试过的,没有问题?
只是上面红色的两个小问题?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马