gpt4 book ai didi

JavaFX:使用 MySQL 数据库中的数据填充组合框,StringConverter 破坏组合框

转载 作者:行者123 更新时间:2023-12-02 03:21:37 26 4
gpt4 key购买 nike

我有一个组合框,我想用数据库中的数据填充它。使用以下代码,ComboBox 中显示的数据是值的 ID,而不是 string 值。

(部分)Java Controller 代码:

@FXML
ComboBox studentPicker;
@Override
public void initialize(URL url, ResourceBundle rb) {
String dbUsername = "root";
String dbPassword = "x";
String dbURL = "jdbc:mysql://localhost:3306/uia";
try {
Connection conn = DriverManager.getConnection(dbURL, dbUsername, dbPassword);
data = FXCollections.observableArrayList();
// Execute query and store result in a resultset
ResultSet rs = conn.createStatement().executeQuery("SELECT username FROM user WHERE userrole='STUDENT';");
while (rs.next()) {
//get string from db,whichever way
data.add(new User(rs.getString("username")));
}

} catch (SQLException ex) {
System.err.println("Error"+ex);
}

studentPicker.setItems(null);
studentPicker.setItems(data);
}

我尝试的StringConverter是从How to import database data into combo box in javafx中获取的。 ,但这会导致 ComboBox 出现错误。请参见下图:左图是应有的样子,右图是在代码中添加 StringConverter 后的样子。

How it is supposed to be How it is when adding the StringConverter below to the code

studentPicker.setConverter(new StringConverter<User>() {

@Override
public String toString(User object) {
return object.getName();
}

@Override
public User fromString(String string) {
// TODO Auto-generated method stub
return null;
}
});

我想显示的是从数据库收集的用户名,但显示的 ID 类似于“is20x.User@4b6ca8f7”。非常感谢任何有关如何解决此问题的建议。

最佳答案

根据我的评论回答。

您正在将一个 new User("username") 添加到您的 data 数组中,这就是为什么您会得到一个奇怪的字符串,它是该特定 的 ID >用户

尝试改为执行 data.add(new User(rs.getString("username")).getUserName());,如果您的 User 类具有 getUserName()方法。

这可能会破坏您正在尝试做的事情,因为我假设您比这里更多地使用data。最好创建另一个变量并将组合框字符串存储在其中。所以类似

//Init same place data is
comboString = FXCollections.observableArrayList(); //Declared somewhere else
data.add(new User(rs.getString("username")));
comboString.add(rs.getString("username"));

关于JavaFX:使用 MySQL 数据库中的数据填充组合框,StringConverter 破坏组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39539838/

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