回 帖 发 新 帖 刷新版面

主题:JCombox的一个小问题

设item为ArrayList<String>类型的,并且不为空
我这样构造了一个JCombox(item.toArray()),并且这个JComboxx已经设置为可编辑的。
现在我遇到的问题,就是无论我选择哪一个元素时用getSelectedItem()方法获得都是第一元素的值。

请问有没人遇到过相似的问题?应该怎样才可获得编辑时的值和选择一个item的时候可以获得相应的值?先谢谢了!!

回复列表 (共7个回复)

沙发

Put your compilable and runnable code here, others might find the mistake you made real fast.
Thanks!

板凳

不必了,代码比较长了,要人在一大堆的代码上看,单是搞清清思路都很浪费时间。我想把主要的问题描述出来也便可以了!

另外,有没有些JCombox的实例可参考?

3 楼

All example code on this page are downloadable and runnable.

[url]http://java.sun.com/docs/books/tutorial/uiswing/examples/components/index.html#ComboBoxDemo[/url]

4 楼

Nobody will 在一大堆的代码上看! At least I will never 在一大堆的代码上看! 

Compile it, run it, the problem will be shown immediately!

You description does not tell us anything!

Sorry!

5 楼

agree!

6 楼

Thank you all, I 已经找到问题的根源了!

7 楼

应该是你的事件写错了  我写了一个小例子贴出来你看看~~
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class TestCombo extends JFrame implements ItemListener
{
    JComboBox jcb;
    JLabel jl=new JLabel("您选择了北京!!");
    String name[]={"北京","上海","济南","泰安"};
    TestCombo(String s)
    {
        super(s);
        setSize(300,200);
        setLocation(300,400);
        jcb=new JComboBox(name);
        jcb.setSelectedIndex(0);
        jcb.setMaximumRowCount(4);
        Container c=getContentPane();
        c.setLayout(new FlowLayout());
        c.add(jcb);
        jcb.addItemListener(this);
        c.add(jl);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public void itemStateChanged(ItemEvent e)
    {
        if (e.getStateChange()==e.SELECTED)
        {
            jl.setText("您选择了"+name[jcb.getSelectedIndex()]);
        }
    }
   public static void main(String args[])
    {
         new TestCombo("测试下拉列表框");
    }
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册