2011-12-12 75 views
0

好吧,假设我有一个包含两列的数据库表 - 一个是“Name”,另一个是“Age”,并且表中有40多个名称及其各自的年龄。我希望这些名字在jList/jComboBox中列出,并且我希望能够在jList/jComboBox中单击一个名称,并将其各自的年龄显示在 - 例如 - 文本框中。我是否必须通过编写一个代码来选择表中的所有名称,然后填充jList/jComboBox,然后选择另一个接受选定名称的代码,将它放入sql语句中,找到匹配的年龄并发送它到一个文本框,或者是否有某种VB-esque列到组合框/列表绑定,我可以利用这个去?将数据库列绑定到java jComboBox和JList

回答

0

对于只有40个名称年龄组合,我只需查询数据库一次,并将此信息存储在Map中。然后,您可以在选择名称时查询地图,并更新年龄文本框。这会比每次选择更改时运行SQL查询快得多。

+0

好的,如果你有类似300名或类似的东西呢? –

0

您必须为您的swing元素设置Model,并根据一个位置的更改将数据更新到其他实现Listener。 看看这个 Binding comboboxes in swing

0

创建一个自定义对象,它存储名称和年龄值并将此对象添加到组合框。然后,当你选择一个项目你有权访问这两个值。

例如:How to use Map element as text of a JComboBox

+0

无法抗拒:为视图原因覆盖toString是非常脏的,你应该_never_做它(因为我们都知道:-)自定义渲染器是_the_的方式去 - 除了更好的替代使用SwingX,它支持可插拔字符串表示渲染器级别:-) – kleopatra

+0

@kleopatra,AFAIK您需要重写模型中对象的toString()以便能够通过键入项目字符串表示的第一个字符来选择列表中的项目。 – camickr

+0

你错过了这一点。重点不在于获取数据并将其显示在组合框或列表中;重点是获取数据,将它们显示在组合框或列表中,以便在单击每个数据时,会在文本框中显示相应或匹配的数据。组合框中的内容与文本框中显示的内容之间必须有链接。 –