这种情况不是向List中添加多个元素,而是你在容器中生成了多个List
一个对象只能New一次,在此的话就不是同一个对象了
你想要显示多个元素。 直接把元素放在数组中 ,只写一句
Jlist jlist=new Jlist(a)就把jlist添加到窗体中就Ok了
如果你把Jlist jlist=new Jlist(a)这句话放在 按钮事件中,你试想下,你每次按下后,都要执行Jlist jlist=new Jlist(a)这句话,我们是不是创建了多个对象那?如果你只是单纯的想通过按钮来添加数组中的元素
Jlist jlist=new Jlist()//定义成为类成员 放在按钮事件的外部
int i=0 //定义成为类成员 放在按钮事件的外部
按钮事件中代码可以这么写
jlist.add(a[i])
i++ //每次单击一次按钮 添加一个元素
主要的就是监听要用ListSelectionListener,对整个jlist进行监听即可,事件源e.getSource要强转为JList,下面给出刚写的例子:public class BaiDuKnows extends JFrame implements ListSelectionListener
{
//创建列表
private JList jl=new JList()
private JLabel label =new JLabel("香蕉苹果大鸭梨等待你的选择!")
//创建字符串数组
private String[] str={"香蕉","苹果","大鸭梨"}
//创建复选框数组
public BaiDuKnows()
{
//设置列表的数据模型
jl.setListData(str)
//为列表注册ListSelectionEvent监听器
jl.addListSelectionListener(this)
jl.setBounds(0, 0, 150, 200)
label.setBounds(180, 0, 200, 200)
this.add(jl)
this.add(label)
this.setLayout(null)
this.setBounds(100,100,360,250)
this.setVisible(true)
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
}
//实现ListSelectionListener接口中的事件处理方法
public void valueChanged(ListSelectionEvent e)
{
Object obj=((JList)e.getSource()).getSelectedValue()
if(obj.equals("香蕉"))
{
label.setText("你选的是banana")
}
else if(obj.equals("苹果"))
{
label.setText("你选的是apple")
}
else if(obj.equals("大鸭梨"))
{
label.setText("你选的是pear")
}
else
{
label.setText("你选的是球!!")
}
}
public static void main(String[] args)
{
new BaiDuKnows()
}
}
这里错了://创建菜单栏及添加菜单
mumain=new JMenuBar()
mumain.add(mfile)
mumain.add(mhelp)
//创建菜单及添加菜单项
mfile=new JMenu("新建")
mfile.add(misave)
mfile.add(misaveas)
mfile.add(miopen)
mfile.add(minew)
//创建菜单及添加菜单项
mhelp=new JMenu("帮助")
mhelp.add(mihelp)
mhelp.add(miupdate)
这里mfile和mhelp都没有new出来,怎嘛添加?把添加放到 mhelp.add(miupdate)的后面。
//创建菜单及添加菜单项
mfile=new JMenu("新建")
mfile.add(misave)
mfile.add(misaveas)
mfile.add(miopen)
mfile.add(minew)
//创建菜单及添加菜单项
mhelp=new JMenu("帮助")
mhelp.add(mihelp)
mhelp.add(miupdate)
//创建菜单栏及添加菜单
mumain=new JMenuBar()
mumain.add(mfile)
mumain.add(mhelp)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)