提问者:小点点

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


private void initialize() {
    loadPersistenceContext();

    List<Events> events = getEventsChoiceBox(getPersistenceContext());
    ObservableList<Event> data = FXCollections.observableList(events);

    cbEvent.setItems(data); // Inserting data into the ChoiceBox
}

这是我的主要代码。问题是当加载表单时,我得到的对象插入到选择框中而不是属性。

这是我的列表事件的内容

Object[]
|- String
|- Integer
Object[]
|- String
|- Integer

所以我想要一个显示该字符串属性并将整数映射到我的控制器的选择框。

我尝试了很多东西,但无法弄清楚。


共3个答案

匿名用户

这是forums.oracle.com的另一个简单实现

为键值创建一个类

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;  }
}

然后将ChoiceBox创建为:

ChoiceBox<KeyValuePair> choiceBox = new ChoiceBox<KeyValuePair>();

将元素填充为;

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

提示:将数据库中的键值对检索到ArrayList中并迭代

要检索值:

choiceBox.getValue().getKey();  // returns the "1"
choiceBox.getValue().toString();  // returns the "Active"

匿名用户

请参阅由数据库标识支持的 JavaFX ChoiceBox 控件示例。

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

choicebox示例应用程序的输出:

同样考虑这样一个实现的ComboBox,因为它有一个内置的机制来从节点的显示中提取节点的值(通过一个CellFactory)。然而,< code>ComboBox的使用通常比< code>ChoiceBox更复杂。

匿名用户

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

重写toString(和fromString)可以完全控制对象的显示方式,而不必在对象本身中实现<code>toString