2016-12-10 22 views
0

顧客の詳細に関連するTableColumnsを持つ "customers"という名前のTableViewがあります。 同じTableView内で、もう1つのTableColumを「Action」として追加します。ここで、Userは特定のCustomerのProduct Detailsを追加、表示、削除する可能性があります。JAVAFX TableViewのセルにGridPane(3つのボタンを含む)を追加する方法

グーグルで複数のことを試しましたが、今までは解決策がありませんでした。

答えて

0

TableColumnにカスタムcellFactoryを追加するだけです。ところで:あなたは、おそらくあなたは、単にHBoxVBoxを使用することができ、その場合にはButtonのための単一の列/行を、使用したいが、あなたはもちろん、次のコードでレイアウトを置き換えることができます:

TableColumn<Product, Void> buttonColumn = new TableColumn<>("Action"); 
buttonColumn.setCellFactory(col -> new TableCell<Product, Void>() { 

    private final VBox container; 

    { 
     Button add = new Button("Add"); 
     Button view = new Button("View"); 
     Button delete = new Button("Delete"); 

     delete.setOnAction(evt -> { 
      // delete this row item from TableView items 
      getTableView().getItems().remove(getIndex()); 
     }); 

     view.setOnAction(evt -> { 
      // call some method with the row item as parameter 
      viewProduct(getTableRow().getItem()); 
     }); 

     add.setOnAction(...); 

     container = new VBox(5, add, view, delete); 
    } 

    @Override 
    public void updateItem(Void item, boolean empty) { 
     super.updateItem(item, empty); 
     setGraphic(empty ? null : container); 
    } 
}); 

tableView.getColumns().add(buttonColumn); 
関連する問題