我正在开发一个简单的Java程序以从数据库中检索信息并将其显示给用户,我想获取某些表的信息并将其添加到组合框(或其他可行的方法)中,但仍然能够获取ID当我选择一个选项时。
例如,假设我有一个这样的表
people table
id name
---------
1 Roger
2 Mike
3 Bob
我想要做的就是检索所有名称,以在组合框中显示它们,如果我从选项列表中选择“ Mike”,我希望程序能够给我回送Mike的ID,以便我可以使用它在另一个选择。可能吗?如果没有,是否有更好的方法来做我想做的事而不必在select中使用名称?我已经有一种获取所需信息并将其放入哈希表的方法,我不知道我是否可以以某种方式使用它。
另外,另一个相关的问题是,对于此类程序,哪种更好的做法是什么?要从数据库检索信息并使其始终可用,而无需再次读取数据库?还是仅读取我当前需要的信息并每次都读取数据库?
编辑:
我正在使用Swing GUI
最佳答案
哪个GUI库?摇摆?如果是这样,那么:
创建一个类,该类包含您的名称String(一个或多个Strings),并具有一个id字段,可能是一个int,但最好还有一个String(包含数字字符)。假设我们将此类称为NameAndId,并确保它具有足够的getter方法,equals,haschCode和诸如此类。
一种选择是创建一个JTable,其行是上述类的对象,并且其模型(这里是从AbstractTableModel扩展的模型)拥有对象NameAndId类型的ArrayList<NameAndId>
。然后,JTable的一列将显示id字段中的数据,而name和其他字段则显示一(或多个)数据。
另一个选择是创建一个JComboBox<NameAndId>
,为其提供一个DefaultComboBoxModel<NameAndId>
,然后用NameAndId实例填充此模型。如果只想显示名称,则有两个选项之一:为NameAndId提供一个public String toString()
方法,该方法显示希望JComboBox显示的内容。这是最简单的解决方案,但专家不建议这样做,因为它会迫使您更改模型类以使其在视图或显示类中工作,这是应该避免的。
另一选择是执行上述操作,但是为您的JComboBox提供一个自定义渲染器,该渲染器仅显示其持有的NameAndId对象的名称信息。这是两者中最可靠的解决方案。有关更多信息,请确保签出renderer section of the JComboBox tutorial。
请注意,由于您使用的模型(无论是TableModel还是ComboBoxModel)都保存有NameAndId对象,因此,即使未在菜单项中显示所有信息,选择的任何项都将保留您需要的所有信息。 GUI。
关于java - Java-在组合框中使用数据库中的两个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38295213/