JComboBox索引和数据库ID比较

时间:2014-08-16 18:02:18

标签: java swing jcombobox

MySQL query > select * from area_detail; +-----------+---------------+--------+ |area_id |area_name |place_id| +-----------+---------------+--------+ |1 |place1_area1 |1 | |3 |place1_area2 |1 | |5 |place1_area3 |1 | |6 |place2_area1 |2 | |10 |place2_area2 |2 | |17 |place3_area1 |3 | |19 |place1_area4 |1 | +-----------+---------------+--------+

我有两个名为cbPlace和cbArea的JComboBox .... cbPlace显示地方,cbArea显示相应位置下的区域....

主要问题是当我想获得我选择的区域的相应id时。 ComboBox给了我自己的索引,如1 2 3 4 5等......

我希望获得结果...如果我从cbArea comboBox单击place1_area3它应该返回id为5(area_id)而不是3(cbArea.getSelectedIndex())。

当我在cbPlace组合框中选择place_2 ...并在cbArea组合框中选择place2_area1时...它给我id为1(cbArea.getSelectedIndex())...但我想要6作为id ... < / p>

我怎么能这样做?

当我在cbPlace组合框中单击place1并在cbArea组合框中单击place1_area1时...它给我id为1 ...因为在那种情况下组合框的索引我也是1 ....仅在这种情况下..

但是,如果我点击任何其他place_area,它会给我错误的结果.... 需要帮助。

1 个答案:

答案 0 :(得分:0)

您需要创建一个自定义对象,该对象包含同一对象中的ID和显示文本。然后组合框可以显示一个值,但您的程序可以使用另一个值。

实现此目的有两种基本方法:

  1. 创建自定义渲染器。请参阅:Combobox With Renderer

  2. 使用自定义对象的toString()方法。请参阅Combobox With Hidden Data

  3. 大多数人会建议渲染器方法更好,只是不要忘记KeySelectionManager。