gpt4 book ai didi

Java - 在组合框中使用数据库中的两个值

转载 作者:行者123 更新时间:2023-11-29 08:43:28 24 4
gpt4 key购买 nike

我正在开发一个简单的 Java 程序来从数据库中检索信息并将其显示给用户,我想获取某些表的信息并将其添加到组合框(或任何有效的)但仍然能够获得当我选择一个选项时返回 id。

例如假设我有一张这样的 table

people table

id name
---------
1 Roger
2 Mike
3 Bob

我想做的是检索所有名称以在组合框中显示它们,如果我从选项列表中选择“Mike”,我希望程序能够返回 Mike 的 ID,这样我可以在另一个选择中使用它。是否可以?如果没有,是否有更好的方法来做我想做的事情而不必在选择中使用名称?我已经有一个方法来获取我需要的信息并将其放入 HashMap 中,我不知道我是否可以以某种方式使用它。

另外,还有一个相关的问题,这种程序的更好做法是什么?要从数据库中检索信息并使其始终可用而无需再次读取数据库?还是每次只读取我当前需要的信息并每次都读取数据库?

编辑:我正在使用 Swing GUI

最佳答案

哪个 GUI 库? Swing ?如果是这样,那么:

  • 创建一个包含您的姓名 String(或 String)的类,并有一个 id 字段,可能是一个 int,但最好还是一个 String(包含数字字符)。假设我们称这个类为 NameAndId,并确保它有足够的 getter 方法、equals、haschCode 等等。
  • 一种选择是创建一个 JTable,其行是上述类的对象,其模型(这里是从 AbstractTableModel 扩展的模型)包含一个 ArrayList<NameAndId>。对象的 NameAndId 类型。然后,JTable 的一列将显示来自 id 字段的数据,一列(或多列)用于显示名称和其他字段。
  • 另一种选择是创建一个 JComboBox<NameAndId> , 给它一个 DefaultComboBoxModel<NameAndId> ,然后用 NameAndId 实例填充此模型。如果您只想显示名称,那么您有两个选项之一:给 NameAndId 一个 public String toString()显示您希望 JComboBox 显示的内容的方法。这是最简单的解决方案,但专家并不推荐,因为它会强制您更改模型类以使其在 View 或显示类中工作,这是应该避免的事情。
  • 另一种选择是执行上述操作,但为您的 JComboBox 提供一个自定义呈现器,该呈现器仅显示来自它所拥有的 NameAndId 对象的名称信息。这是两者中最稳健的解决方案。有关更多信息,请务必查看 renderer section of the JComboBox tutorial .

请注意,由于您使用的模型,无论是 TableModel 还是 ComboBoxModel,都包含 NameAndId 对象,因此无论选择什么项目,都将包含您需要的所有信息,即使它没有显示所有这些信息GUI 中的信息。

关于Java - 在组合框中使用数据库中的两个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38295213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com