如何根据表中的选定行在JavaFX选择框中设置文本

时间:2016-12-01 18:39:52

标签: java events javafx getselection

我正在使用JavaFx开发票务系统。当用户选择表格中的特定故障单并单击“编辑”按钮时,所选行中的数据将加载到下面表单中的相应字段中。然后,用户可以进行更改并更新信息。

Image showing the GUI I am referring to

但是,我在确定如何将“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()方法,但这不起作用。有人可以帮助我吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

调用choiceBox.setValue()设置选择框的值:

import javafx.scene.control.ChoiceBox;

ChoiceBox cb = new ChoiceBox();
cb.getItems().addAll("item1", "item2", "item3");
cb.setValue("item2");

后续问题的答案

  

所以我已经在fxml

中设置了选择框的值

可能不是。可能你已经设置了项目而不是值(这很好)。对于您的用例,您无法在FXML中设置该值,因为在用户选择主表中的相关行项目之前,该值是未知的。

  

当我尝试使用setValue()方法设置从表中检索的值时,我收到一条错误消息:不兼容的类型: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

您的问题中有太多未知因素可以提供更具体的答案。