如何用数据库中的数据填充JavaFX ChoiceBox?

如何用数据库中的数据填充JavaFX ChoiceBox?,java,javafx,Java,Javafx,所以我想要一个ChoiceBox,显示字符串属性,并将整数映射到我的控制器 我尝试了很多方法,但都没能找到答案。看看这个例子 该示例通过定义一个选择类来工作,该选择类由数据库行ID和要在选择框中显示的项目的字符串表示组成。默认的toString选择方法被一个自定义实现覆盖,该实现返回要显示的项的字符串表示形式,而不是数据库ID。将选择添加到ChoiceBox时,ChoiceBox会将每个选择转换为要显示的字符串。显示的选项字符串值仅为选项文本,而不包括数据库ID或使用默认的选项toString,

所以我想要一个ChoiceBox,显示字符串属性,并将整数映射到我的控制器

我尝试了很多方法,但都没能找到答案。

看看这个例子

该示例通过定义一个选择类来工作,该选择类由数据库行ID和要在选择框中显示的项目的字符串表示组成。默认的
toString
选择方法被一个自定义实现覆盖,该实现返回要显示的项的字符串表示形式,而不是数据库ID。将选择添加到ChoiceBox时,ChoiceBox会将每个选择转换为要显示的字符串。显示的选项字符串值仅为选项文本,而不包括数据库ID或使用默认的选项
toString
,该选项仅显示无意义的对象引用

choicebox示例应用程序的输出:


也考虑了这样的实现,因为它有一个机制来从节点的显示(通过A)抽象节点的值。然而,

组合框的使用通常比
选择框
更复杂

为键值创建一个类

Object[]
|- String
|- Integer
Object[]
|- String
|- Integer
然后将ChoiceBox创建为:

public class KeyValuePair {
   private final String key;
   private final String value;
   public KeyValuePair(String key, String value) {
   this.key = key;
   this.value = value;
   }

  public String getKey()   {    return key;    }

  public String toString() {    return value;  }
}
提示:从数据库中检索键值对到ArrayList中并进行迭代

要检索该值,请执行以下操作:

choiceBox .getItems().add(new KeyValuePair("1", "Active"));

或者简单地执行:
myChoiceBox.setConverter(myStringConverter)
,传入您自己的
javafx.util.StringConverter子类的实例


重写toString(和fromString)可以让您完全控制对象的显示方式,而无需在对象本身中实现
toString

我发现理解您的问题有点困难,但是,看看这是否有帮助,因为它似乎解决了一个与您所问问题类似的问题。我知道这有点令人困惑,因为我不知道如何清楚地表达这一点,但这个例子帮助很大!非常感谢!:)
ChoiceBox<KeyValuePair> choiceBox = new ChoiceBox<KeyValuePair>();
choiceBox .getItems().add(new KeyValuePair("1", "Active"));
choiceBox.getValue().getKey();  // returns the "1"
choiceBox.getValue().toString();  // returns the "Active"