2011-07-12 42 views
1

我试图让位置(作为INT)的选择对象位置,生成组合框和富人这样入门的JComboBox对象的JComboBox

for (int d=0; d<i; d++) 
     { 
      titulos.addItem(listaPraBox[d]); 
     } 

    ActionListener comboListener = new ActionListener() { 
      public void actionPerformed(ActionEvent actionEvent) { 
      ItemSelectable is =(ItemSelectable)actionEvent.getSource();  
      objectoseleccionado = selectedString(is); 
      DeskMetodos.listaTexto(objectoseleccionado);   
      } 
     }; 
    titulos.addActionListener(comboListener); 

的动作侦听器执行

static private String selectedString(ItemSelectable is) { 
    Object selected[] = is.getSelectedObjects(); 

    return ((selected.length == 0) ? "null" : (String)selected[0]); 
    } 

但我希望所选对象的位置通过该int从另一个数组获取字符串。

这甚至可能吗?通过我所做的搜索,甚至没有提到这一点。

回答

5

JComboBox定义getSelectedIndex()。该实现只是将数据模型与getSelectedItem()进行循环检查。

这并没有达到ItemSelectable,但数据模型本身也没有,所以你可能需要使用具体的类。

+0

你能向我解释具体的课吗?不太明白这是什么意思。 在eclipse中,它给了我关闭添加选项(Component comp,Index int)。该组件可以是数组的x位置的字符串吗? – Lucky

+0

“具体类”,我的意思是你可能需要在你的监听器代码中使用'JComboBox'而不是'ItemSelectable'。对于JComboBox, –

+0

会更好看ItemListener,+1 – mKorbel

1

不是将项目存储在组合框中,而是必须使用索引来引用另一个值的数组。只需在ComboBox中存储一个对象,该对象的toString()输出与您当前显示的值匹配并直接引用数组中的对象。这样,任何拉动所选项目或处理COMOBO框的对象都可以拉取他们需要的值,而不必“知道”这个其他数组。

+0

该方法的问题将是重复的名称(我认为),这就是为什么我需要我的位置。现在明白了。但我感谢你的洞察力。 – Lucky

+0

@Lucky,这将解决重复名称问题,因为每个位置都会有一个不同的对象,而不管描述如何都会有正确的值。 – jzd