我正在开发一个简单的Java程序来从数据库中检索信息并将其显示给用户,我想获取某些表的信息并将其添加到组合框(或者无论什么工作)但仍然能够在我选择一个选项时获取id。
例如,让我说我有一个这样的表
people table
id name
---------
1 Roger
2 Mike
3 Bob
我想要做的是检索所有名称以在组合框中显示它们,如果我选择让我们说“迈克”。从选项列表中,我希望程序能够为我提供Mike的ID,以便我可以在另一个选择中使用它。可能吗?如果没有,有没有更好的方法来做我想做的事情而不必在选择中使用该名称?我已经有了一种方法来获取我需要的信息并将其放入hashmap中,我不知道我是否可以以某种方式使用它。
另外,另一个相关的问题是,这种程序的更好的做法是什么?要从数据库中检索信息并使其始终可用而无需再次读取数据库?或者只读取数据库中我目前需要的信息并且每次都这样做?
编辑: 我正在使用Swing GUI
答案 0 :(得分:4)
哪个GUI库?摇摆?如果是,那么:
ArrayList<NameAndId>
个对象NameAndId类型。然后,JTable的一列将显示来自id字段的数据,以及一个(或更多)用于名称和其他字段的数据。JComboBox<NameAndId>
,给它一个DefaultComboBoxModel<NameAndId>
,然后使用NameAndId实例填充此模型。如果您只想显示名称,那么您有两个选项之一:给NameAndId一个public String toString()
方法,显示您希望JComboBox显示的内容。这是最简单的解决方案,但不会被专家推荐,因为它迫使您更改模型类以使其在视图或显示类中工作,这是应该避免的。请注意,由于您使用过的模型,无论是TableModel还是ComboBoxModel,都拥有NameAndId的对象,因此无论选择哪个项目都将保存您需要的所有信息,即使它没有& #39; t显示GUI中的所有信息。