Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在swing中动态注册侦听器_Java_Swing_Combobox_Listener_Classcastexception - Fatal编程技术网

Java 在swing中动态注册侦听器

Java 在swing中动态注册侦听器,java,swing,combobox,listener,classcastexception,Java,Swing,Combobox,Listener,Classcastexception,我创建了动态填充组件的UI。 UI类似于表,它有X个行,但每行有4个组件[1个JLable,3个JComboxes]。我想注册所有组合框的侦听器,从组合框中获取selectedItem(),并将其用于进一步参考。但是,我不能用我现有的代码来完成它。 代码如下 for(int i=0; i< list.size(); i++) { final int j = i; cb1[i] = new JCombobx(); masterPane

我创建了动态填充组件的UI。 UI类似于表,它有X个行,但每行有4个组件[1个JLable,3个JComboxes]。我想注册所有组合框的侦听器,从组合框中获取selectedItem(),并将其用于进一步参考。但是,我不能用我现有的代码来完成它。 代码如下

    for(int i=0; i< list.size(); i++) {
        final int j = i;

        cb1[i] = new JCombobx();
        masterPanel[i].add(cb1[i]);

        cb2[i] = new JCombobx();
        masterPanel[i].add(cb2[i]);

        cb3[i] = new JCombobx();
        masterPanel[i].add(cb3[i]);

            cb1[j].addItem("Select Value");
            for (OtherObject l : List) {
                cb1[j].addItem(l);
            }

        cb1[j].addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                selectedValue = (SomeObject) cb1[j].getSelectedItem();
            }
        }); 
    }
在这种情况下,组合框[cb2]将根据从cb1中选择的值填充,最后,第三个组合框将根据从cb2中选择的值填充。
有什么问题吗?

例外情况非常清楚:显然,您将字符串放入了第一个组合框对象(在这里没有显示的代码中)

字符串对象可以决不能强制转换为(SomeObject)类

因此,有两种方法可以解决这个问题:

  • 您可以查看实际将值添加到第一个组合框的代码。如果您想使用SomeObject,那么代码应该添加SomeObject的实例
  • 或者,如果第一个框使用字符串是正确的;然后,您必须更改当前尝试强制转换getSelectedItem()返回的字符串的代码。。。不要投
    1) 为了更快地获得更好的帮助,请发布一个or。2) 请注意,编译错误和堆栈跟踪是大多数程序员经常遇到的问题,建议在寻求有关堆栈溢出的帮助之前对其原因进行一些研究并加以修复。我看不到任何证据表明你在这个例子中做过这件事。“代码在这里”允许我们运行它的MCVE在哪里?请看一个问题的例子。相信我们:如果我们认为我们不理解你的问题是因为代码缺失,那么我们就不理解你的问题是因为代码缺失。不要带着“代码在这里”回到我们这里!另外:异常消息不会说谎。但人类经常犯错。正如我所说:异常确切地告诉您,您在组合框中放入了字符串。如果你不相信。。。这不会改变你问题的本质。抱歉之前的评论。。。可能是1D阵列的原因吗?停止猜测。发布你的代码。我们没有一个神奇的水晶球可以告诉我们你的代码中发生了什么。正如我所说的:我已经给了你一个非常清晰的东西开始看。所以,你应该从这一点上找到你的路;或者你发布你的代码。其他任何事情都是浪费你和我们的时间。
        java.lang.ClassCastException: java.lang.String cannot be cast to SomeObject