【问题标题】:Getting first column value of selected row获取所选行的第一列值
【发布时间】:2013-06-23 16:05:53
【问题描述】:

我在选择一行并获取第一列的索引时遇到了一些问题。我知道你可以在 Java Swing 中做到这一点:

jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    // Fire this when selected value changed
    jTable.getSelectionModel().addListSelectionListener(
            new ListSelectionListener() {
                @Override
                public void valueChanged(ListSelectionEvent e) {
                    if (!e.getValueIsAdjusting()) {
                        int viewRow = jTable.getSelectedRow();
                        // Get the first column data of the selectedrow
                        int topicID = Integer.parseInt(jTable.getValueAt(
                                viewRow, 0).toString());
}
            });

这就是我填充表格数据的方式:

public void getAndPopulateCategory() {
    data = FXCollections.observableArrayList();
    try {
        db.getConnection();
        String sql = "SELECT * FROM sm_category";
        ResultSet rs = null;
        // Call readRequest to get the result
        rs = db.readRequest(sql);

        while (rs.next()) {
            ObservableList<String> row = FXCollections.observableArrayList();
            //All the rows are added here dynamically 
            row.add(rs.getString("categoryID"));
            row.add(rs.getString("categoryName"));
            row.add(rs.getString("categoryDescription"));
            data.add(row);
        }
        viewCategory.setItems(data);
        rs.close();
    } catch (SQLException ex) {
        ex.printStackTrace();
        System.out.println("Error SQL!!!");
        System.exit(0);
    }

    TableColumn id = new TableColumn("ID");
    id.setVisible(false);
    id.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
        public ObservableValue<String> call(TableColumn.CellDataFeatures<ObservableList, String> param) {
            return new SimpleStringProperty(param.getValue().get(0).toString());
        }
    });

    viewCategory.getColumns().addAll(id;
}

我正在尝试在 javaFX 中获取所选行的第一列值。有人知道吗?提前致谢。

【问题讨论】:

  • "javaFX 中选定行的第一列值。" 你使用的是什么组件(如果不是JTable)?
  • 表格视图。我想使用 Jtable 但不幸的是 javaFX 不支持
  • @AndrewThompson 有什么想法吗?
  • @trashgod 我认为这是一个用于 java swing 的。 JavaFX 不支持 jTable
  • @Carol:你得到解决方案了吗?

标签: java swing javafx tableview


【解决方案1】:

这是适合您的解决方案。下面的代码根据行的选择为您提供第一列值。

 tableview.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
            @Override
            public void changed(ObservableValue observableValue, Object oldValue, Object newValue) {
                //Check whether item is selected and set value of selected item to Label
                if (tableview.getSelectionModel().getSelectedItem() != null) {
                    TableView.TableViewSelectionModel selectionModel = tableview.getSelectionModel();
                    ObservableList selectedCells = selectionModel.getSelectedCells();

                    TablePosition tablePosition = (TablePosition) selectedCells.get(0);


                    tablePosition.getTableView().getSelectionModel().getTableView().getId();
                    //gives you selected cell value..
                    Object GetSinglevalue = tablePosition.getTableColumn().getCellData(newValue);

                    getbothvalue = tableview.getSelectionModel().getSelectedItem().toString();
                //gives you first column value..
                    Finalvaluetablerow = getbothvalue.toString().split(",")[0].substring(1);
                    System.out.println("The First column value of row.." + Finalvaluetablerow);
                }
            }
        });

尝试将此应用于您的代码..

谢谢..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 2014-10-04
    • 2018-04-07
    • 1970-01-01
    相关资源
    最近更新 更多