如何根据 table 中的选定行在 JavaFX 选择框中设置文本
How to set text in a JavaFX choice box based on selected row in a table
我正在使用 JavaFx 开发票务系统。当用户在 table 中选择特定票证并单击 "Edit" 按钮时,所选行中的数据将加载到下面表单中的相应字段中。然后用户可以进行更改并更新信息。
但是,我在弄清楚如何将 "Status" 和 "Severity" 的选择框中的文本设置为所选行中的文本时遇到问题。这是我到目前为止的编辑按钮代码:
@FXML
private void editButtonFired(ActionEvent event) {
try {
int value = table.getSelectionModel().getSelectedItem().getTicketNum();
JdbcRowSet rowset = RowSetProvider.newFactory().createJdbcRowSet();
rowset.setUrl(url);
rowset.setUsername(username);
rowset.setPassword(password);
rowset.setCommand("SELECT * FROM s_fuse_ticket_table WHERE ticket_id = ?");
rowset.setInt(1, value);
rowset.execute();
while(rowset.next()) {
ticketNumber.setText(rowset.getString(1));
summary.setText(rowset.getString(2));
}
}catch (SQLException e){
}
}
我尝试使用 .setSelectionModel() 方法,但没有用。有人可以帮助我吗?
谢谢!
调用choiceBox.setValue()
设置选择框的值:
import javafx.scene.control.ChoiceBox;
ChoiceBox cb = new ChoiceBox();
cb.getItems().addAll("item1", "item2", "item3");
cb.setValue("item2");
后续问题的答案
So I have already set the values for the choice box in the fxml
可能不会。可能您已经设置了项目而不是值(这很好)。对于您的用例,您无法在 FXML 中设置值,因为在用户选择主 table.
中的相关行项目之前,该值是未知的
When I try to use the setValue() method to set the value retrieved from the table I get an error saying: incompatible types: String cannot be converted to CAP#1 where CAP#1 is a fresh type-variable: CAP#1 extends Object from capture of
我以前从未遇到过这样的错误消息。对于它的价值,这里有一些关于它的信息:incompatible types and fresh type-variable,但我承认我没有直接看到与你的情况的相关性。我的猜测是您没有为 ChoiceBox 定义项目的类型,或者将它们定义为 String 以外的东西。您可以使用以下方式显式设置类型:
ChoiceBox<String> cb = new ChoiceBox<>();
由于您使用的是 FXML,因此选择框定义不会使用 new 关键字,只会类似于以下内容:
@FXML
ChoiceBox<String> cb;
如果您的 ChoiceBox 类型不是 String,那么您可能需要 set a converter。
您的问题中有太多未知数,无法提供更具体的答案。
我正在使用 JavaFx 开发票务系统。当用户在 table 中选择特定票证并单击 "Edit" 按钮时,所选行中的数据将加载到下面表单中的相应字段中。然后用户可以进行更改并更新信息。
但是,我在弄清楚如何将 "Status" 和 "Severity" 的选择框中的文本设置为所选行中的文本时遇到问题。这是我到目前为止的编辑按钮代码:
@FXML
private void editButtonFired(ActionEvent event) {
try {
int value = table.getSelectionModel().getSelectedItem().getTicketNum();
JdbcRowSet rowset = RowSetProvider.newFactory().createJdbcRowSet();
rowset.setUrl(url);
rowset.setUsername(username);
rowset.setPassword(password);
rowset.setCommand("SELECT * FROM s_fuse_ticket_table WHERE ticket_id = ?");
rowset.setInt(1, value);
rowset.execute();
while(rowset.next()) {
ticketNumber.setText(rowset.getString(1));
summary.setText(rowset.getString(2));
}
}catch (SQLException e){
}
}
我尝试使用 .setSelectionModel() 方法,但没有用。有人可以帮助我吗? 谢谢!
调用choiceBox.setValue()
设置选择框的值:
import javafx.scene.control.ChoiceBox;
ChoiceBox cb = new ChoiceBox();
cb.getItems().addAll("item1", "item2", "item3");
cb.setValue("item2");
后续问题的答案
So I have already set the values for the choice box in the fxml
可能不会。可能您已经设置了项目而不是值(这很好)。对于您的用例,您无法在 FXML 中设置值,因为在用户选择主 table.
中的相关行项目之前,该值是未知的When I try to use the setValue() method to set the value retrieved from the table I get an error saying: incompatible types:
String cannot be converted to CAP#1 where CAP#1 is a fresh type-variable: CAP#1 extends Object from capture of
我以前从未遇到过这样的错误消息。对于它的价值,这里有一些关于它的信息:incompatible types and fresh type-variable,但我承认我没有直接看到与你的情况的相关性。我的猜测是您没有为 ChoiceBox 定义项目的类型,或者将它们定义为 String 以外的东西。您可以使用以下方式显式设置类型:
ChoiceBox<String> cb = new ChoiceBox<>();
由于您使用的是 FXML,因此选择框定义不会使用 new 关键字,只会类似于以下内容:
@FXML
ChoiceBox<String> cb;
如果您的 ChoiceBox 类型不是 String,那么您可能需要 set a converter。
您的问题中有太多未知数,无法提供更具体的答案。