2016-08-25 14 views
0

JavaFXのテーブルビューを使用してボタンを列に追加しようとしています。私は正常に1つの列のための単一のボタンを作成しました。同じコードを使用して別の列に別のボタンを追加して変数を少し変更すると、私が修正できない1つのエラーが発生します。エラーは私にスーパーという言葉を使用させないということです。以下はエラーが発生しているコードです。TableViewの列にボタンを追加するJavaFX

TableColumn<UserDetails, UserDetails> addColumn = column("Add", ReadOnlyObjectWrapper<UserDetails>::new, 50); 

    addColumn.setCellFactory(col -> { 
     Button addButton = new Button("Add"); 
     TableCell<UserDetails, UserDetails> addCell = new TableCell<UserDetails, UserDetails>() { 
      public void addItems(UserDetails userDetails, boolean empty) { 
       super.addItems(userDetails, empty); //This line is the error (super) 
       if (empty) { 
        setGraphic(null); 
       } else { 
        setGraphic(addButton); 
       } 
      } 

     }; 

     addButton.setOnAction(event -> add(addCell.getItem(), primaryStage)); 
     return addCell; 
    }); 

何が間違っていますか?

+0

あなたが直面している「エラー」はなんですか? – iMan

答えて

2

TableCell javadocに見られるように、TableCellにはaddItemsの方法がありません。 the updateItem method

@Override 
protected void updateItem(UserDetails userDetails, boolean empty) { 
    super.updateItem(userDetails, empty); 
    ... 
+0

こんにちは、あなたの答えをありがとう、私はupdateItemメソッドを行っているので、すべての方法は、 "項目を追加する"ボタンを列に追加しますか? – Milan

+0

@Milanあなたはクラスに 'addItem'メソッドを追加できますが、これが' TableCell'に追加されたわけではありません。さらに、ここでは匿名クラスを使用しているので、特に制限があるように見えるので、匿名クラスの外側からこのメソッドにアクセスする唯一の方法は、リフレクションになります。 – fabian

関連する問題