将组合框[example]中的值更改为;例如;在javafx中

将组合框[example]中的值更改为;例如;在javafx中,javafx,combobox,Javafx,Combobox,我使用一个组合框从stage.show()上的数据库获取数据,到目前为止,我可以检索数据并在组合框上实现我的changelistener 问题是我从数据库中得到的是[“示例”],而不是“示例”。这是我第一次使用javafx和don;我不知道输出应该是什么样子,但这个对我来说很奇怪 下面是它的截图和我的代码 [ package-libman; 导入java.sql.*; 导入javafx.application.application; 导入javafx.beans.value.ChangeLis

我使用一个组合框从stage.show()上的数据库获取数据,到目前为止,我可以检索数据并在组合框上实现我的changelistener

问题是我从数据库中得到的是[“示例”],而不是“示例”。这是我第一次使用javafx和don;我不知道输出应该是什么样子,但这个对我来说很奇怪

下面是它的截图和我的代码

[

package-libman;
导入java.sql.*;
导入javafx.application.application;
导入javafx.beans.value.ChangeListener;
导入javafx.beans.value.observeValue;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.geometry.*;
导入javafx.scene.scene;
导入javafx.scene.layout.*;
导入javafx.stage.stage;
导入javafx.stage.*;
导入javafx.scene.control.*;
导入javafx.scene.text.*;
导入javafx.collections.*;
/**
/**
*
*@作者kels
*/
公共类菜单扩展了应用程序{
私有可观测列表数据;
数据库操作员登录;
结果集rs;
报表统计;
私有字符串getval;
@凌驾
@SuppressWarnings({“静态访问”、“Convert2Lambda”})
公共无效开始(阶段primaryStage){
//定义UI元素
标签lblID=新标签(“名称:”);
标签lblTitle=新标签(“书名:”);
Label lblautor=新标签(“作者:”);
标签lblissue=新标签(“发布日期”);
Label lblreturn=新标签(“返回日期:”);
组合框标题=新组合框();
TextField txtid=新的TextField();
TextField txtitle=新的TextField();
TextField txtauthor=新建TextField();
TextField txtissue=新建TextField();
TextField txtreurn=新的TextField();
//设置提示文本
txtid.setpromptext(“输入借款人名称”);
setPrompText(“输入书名”);
setPrompText(“输入作者姓名”);
txtissue.setPrompText(“输入发布日期”);
txtreurn.setPrompText(“输入返回日期”);
title.setPrompText(“从数据库中填充书籍”);
//工具提示ttip=新工具提示(“后退菜单”);
按钮btn=新按钮(“借阅簿”);
按钮btnexit=新按钮(“菜单>>”;
setTooltip(新工具提示(“返回菜单”);
//将窗格设置为附加组件
GridPane GridPane=新建GridPane();
设置填充(新插图(20));
网格窗格。setHgap(5);
gridpane.setVgap(5);
//设置组件
gridpane.setHalignment(lblID,HPos.RIGHT);
添加(lblID,0,0);
gridpane.setHalignment(txtid,HPos.RIGHT);
添加(txtid,1,0);
gridpane.setHalignment(lblTitle,HPos.RIGHT);
网格窗格。添加(lblTitle,0,1);
gridpane.setHalignment(标题,HPos.RIGHT);
gridpane.add(标题,1,1);
gridpane.setHalignment(LBlautor,HPos.RIGHT);
gridpane.add(lblautor,0,2);
setHalignment(txtauthor,HPos.RIGHT);
添加(txtauthor,1,2);
gridpane.setHalignment(lblissue,HPos.RIGHT);
添加(lblissue,0,3);
gridpane.setHalignment(txtisue,HPos.RIGHT);
gridpane.add(txtissue,1,3);
gridpane.setHalignment(lblreturn,HPos.RIGHT);
添加(lblreturn,0,4);
setHalignment(txtreurn,HPos.RIGHT);
添加(txtreurn,1,4);
gridpane.setHalignment(btn,HPos.RIGHT);
添加(btn,1,5);
gridpane.setHalignment(btnexit,HPos.RIGHT);
添加(btnexit,2,5);
//在windows启动时显示从db到combobox的值
data=FXCollections.observearraylist();
setOnShowing(新的EventHandler()){
@凌驾
公共无效句柄(WindowEvent事件){
试一试{
login=newdboperator();
stat=login.getStatement();
rs=stat.executeQuery(“从BOOKDB中选择*);
while(rs.next()){
ObservableList行=FXCollections.observableArrayList();
添加(rs.getString(“标题”);
//添加(rs.getString(“作者”);
添加数据(行);
}
标题.设置项目(数据);
rs.close();
}
catch(SQLException-ex){
System.out.println(“未找到驱动程序!!!”+ex);
系统出口(0);
}
}
});
//将gridpane添加到stackpane
StackPane root=新的StackPane();
root.getChildren().add(gridpane);
//标题:setO
场景=新场景(根,380220);
primaryStage.setTitle(“借用菜单”);
初级阶段。场景(场景);
primaryStage.SetResizeable(假);
primaryStage.show();
//系统输出打印项次(行);
//在选择时激活组合侦听器
title.getSelectionModel().SelectEditeProperty().addListener(新的ChangeListener()){
@凌驾

public void changed(observevalue您得到的是实际操作的正确结果:
observebalist data
bundle两个集合

对于组合框的每一项,都有一个集合,因此在呈现时会看到“[]”

此最小样本复制了您的案例:

@Override
public void start(Stage primaryStage) {
    ComboBox title = new ComboBox();

    StackPane root = new StackPane();
    root.getChildren().add(title);

    ObservableList<ObservableList> data = FXCollections.observableArrayList();

    List<String> test = Arrays.asList("Test", "Example");

    for(String s : test) {
        ObservableList<String> row =FXCollections.observableArrayList();
        row.add(s);
        data.add(row);
    }
    title.setItems(data);

    Scene scene = new Scene(root, 300, 250);
    primaryStage.setScene(scene);
    primaryStage.show();
}
@覆盖
公共无效开始(阶段primaryStage){
组合框标题=新组合框();
StackPane root=新的StackPane();
root.getChildren().add(title);
ObservableList data=FXCollections.observableArrayList();
List test=Arrays.asList(“test”、“Example”);
用于(字符串s:测试){
ObservableList行=FXCollections.observableArrayList();
行。添加(s);
添加数据(行);
}
标题.设置项目(数据);
场景=新场景(根,300,250);
初级阶段。场景(场景);
主要的,重要的
@Override
public void start(Stage primaryStage) {
    ComboBox title = new ComboBox();

    StackPane root = new StackPane();
    root.getChildren().add(title);

    ObservableList<ObservableList> data = FXCollections.observableArrayList();

    List<String> test = Arrays.asList("Test", "Example");

    for(String s : test) {
        ObservableList<String> row =FXCollections.observableArrayList();
        row.add(s);
        data.add(row);
    }
    title.setItems(data);

    Scene scene = new Scene(root, 300, 250);
    primaryStage.setScene(scene);
    primaryStage.show();
}
@Override
public void start(Stage primaryStage) {
    ComboBox<String> title = new ComboBox();

    StackPane root = new StackPane();
    root.getChildren().add(title);

    ObservableList<String> data = FXCollections.observableArrayList();

    List<String> test = Arrays.asList("Test", "Example");

    for(String s : test) {
        data.add(s);
    }
    title.setItems(data);

    Scene scene = new Scene(root, 300, 250);
    primaryStage.setScene(scene);
    primaryStage.show();
}