为什么我不能在表中选择?我和别人一样

时间:2019-10-02 17:32:30

标签: javafx-8

 @FXML
 private void onEditChange(TableColumn.CellEditEvent<ModelTable, String> event) {
   ModelTable tbl = table.getSelectionModel().getSelectedItem();
   tbl.setName(event.getNewValue());
 }

我要在选择后更改表格视图的内容。

1 个答案:

答案 0 :(得分:0)

您需要使用侦听器,并将其放置在initialize方法中
当您单击表中的一行时,您将调用一些执行所需行为的方法。我们已经发布了代码,当选择表行时,我们导航到一个新屏幕。在导航之前,我们将屏幕命名为blablaPane,我们设置了两个静态变量,以便可以在下一个屏幕上使用这些值。

    private void toChildView() throws IOException{
    stage = (Stage)parentTVPane.getScene().getWindow();// pane you are ON
    childTVPane = FXMLLoader.load(getClass().getResource("childtableview.fxml"));// pane you are GOING TO
    Scene scene = new Scene(childTVPane);// pane you are GOING TO
    scene.getStylesheets().add(getClass().getResource("diary.css").toExternalForm());
    stage.setScene(scene);
    stage.setTitle("Diary Entries by Date Entered and Title"); 
    stage.show();
    stage.sizeToScene();
    stage.centerOnScreen();  
}

private void showTableDataDetails(ParentModel info) throws IOException{
    if (info != null) {
        info =  (ParentModel) ptable.getSelectionModel().getSelectedItem();
        strMONTH = info.getPMonth();
        strYEAR = info.getPYear();
        toChildView();
    } 
}

@Override
public void initialize(URL url, ResourceBundle rb) {

    try {
        ReadFromParent();
    } catch (SQLException ex) {
        Logger.getLogger(ParentTableViewController.class.getName()).log(Level.SEVERE, null, ex);
    }

    ptable.getSelectionModel().selectedItemProperty().addListener((ObservableValue<? extends ParentModel>
        observable,ParentModel oldValue, ParentModel newValue) -> {
        try {
            showTableDataDetails((ParentModel) newValue); // When a row of the table is Selected call
            // Proper Construction                       // showTableDataDetails method
        } catch (IOException ex) {
            Logger.getLogger(ParentTableViewController.class.getName()).log(Level.SEVERE, null, ex);
        }
    });
}