2016-07-29 3 views
0

В настоящее время я работаю над javafx, и у меня есть серьезная проблема. Я не могу найти способ получить индекс строки кнопки, которую я создал динамически в виде таблицы.Как узнать строку динамически созданной кнопки tableview на javafx

Если кто-то может мне помочь, это было бы очень полезно.

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