2013-06-26 88 views
0

我在選擇一行並獲取第一列中的索引時遇到了一些問題。我知道你可以在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選擇行的第一列的值。有人知道嗎?提前致謝。

+0

* 「的第一列選擇行的JavaFX的價值。」 *您使用哪些組件(如果不是'JTable' )? –

+0

表格視圖。我想使用Jtable,但不幸的是,javaFX不支持 –

+0

@AndrewThompson有什麼想法? –

回答

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); 
       } 
      } 
     }); 

嘗試和應用給你的代碼..

謝謝..