2016-07-29 36 views
0

我目前正在javafx上工作,我有一个严重的问题。我无法找到一种方法来获取我在表视图上动态创建的按钮行的索引。如何知道在javafx上的tableview的动态创建按钮的行

如果有人能帮助我,那将会非常有帮助。

this.clmColumn.setCellFactory((TableColumn<?, ?> column) -> { 
      return new TableCell<?, ?>() { 
       @Override 
       protected void updateItem(? item, boolean empty) { 

        super.updateItem(item, empty); 
        if (!empty) { 
         final HBox hbox = new HBox(5); 
         final VBox vbox = new VBox(5); 
         Label label = new Label(item.toString()); 
         final Button btnMais = new Button("+"); 
         btnMais.setMinSize(25, 25); 
         final TableCell<?, ?> c = this; 
         btnMais.setOnAction(new EventHandler<ActionEvent>() { 
          @Override 
          public void handle(ActionEvent event) { 
           // At this point i want to select the current ROW of the button that i pressed on the tableview. 

          } 
         }); 
         final Button btnMenos = new Button("-"); 
         btnMenos.setMinSize(25, 25); 
         btnMenos.setOnAction(new EventHandler<ActionEvent>() { 
          @Override 
          public void handle(ActionEvent event) { 
           if (getItem() > 1) { 
            // At this point i want to select the current ROW of the button that i pressed on the tableview. 

           } 
          } 
         }); 
         final Button btnRemover = new Button("Remover"); 
         btnRemover.setFont(new Font(8)); 
         btnRemover.setOnAction(new EventHandler<ActionEvent>() { 
          @Override 
          public void handle(ActionEvent event) { 
           // At this point i want to select the current ROW of the button that i pressed on the tableview. 

          } 
         }); 
         vbox.getChildren().add(hbox); 
         vbox.getChildren().add(btnRemover); 
         hbox.getChildren().add(btnMais); 
         hbox.getChildren().add(label); 
         hbox.getChildren().add(btnMenos); 
         hbox.setAlignment(Pos.CENTER); 
         vbox.setAlignment(Pos.CENTER); 
         setGraphic(vbox); 
        } else { 
         setGraphic(null); 
        } 

       } 
      }; 
     }); 

回答

0

handle()方法,你可以做

Object row = getTableView.getItems().get(getIndex()); 

您可以用更具体的类型代替Object如果在类型参数在整个使用更具体的类型。

+0

谢谢!这是正确的答案! – helpplz

相关问题