2016-08-12 13 views
2

私はthis Oracle tutorialの後にFXMLでTableViewを作成しました。しかし、セルを編集可能にする方法に関する情報はありません。コントローラコードにfirstNameCol.setOnEditCommit(new EventHandler ...のようなものを追加することを提案している他のチュートリアルを試しましたが、動作しませんでした。ここに見られるように、どんなに私は、マウスをクリックするか、キーボードをパンチする方法、表のセルには、「編集可能なテキストボックス」に変更しません。ここでFXMLで編集可能なTableCellを定義する方法は?

enter image description here

は、テーブルの私のFXML定義です:

<TableView fx:id="tvAlgorithmSteps" editable="true" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="200.0" VBox.vgrow="ALWAYS"> 
    <columns> 
     <TableColumn editable="true" prefWidth="150.0" sortable="false" text="Step"> 
      <cellValueFactory> 
       <PropertyValueFactory property="stepName" /> 
      </cellValueFactory> 
     </TableColumn> 
     ... 

オートコンプリートを使用すると、FXMLのTableColumnにonEditCommit=""を設定することができますが、そこに何を入れるべきかはわかりません。

FXMLを編集してセルの編集を許可する方法を教えてください。

答えて

2

編集可能なセルを作成するには、cellFactoryを使用する必要があります。 TextFieldTableCellsPropertyValueFactoryは、書き込み可能なプロパティを返す場合、onEditCommitあなたは、ファイルの先頭にTextFieldTableCellクラスをインポートする処理命令を追加する必要があります(ただし、<?xml ...後)も

<TableColumn editable="true" prefWidth="150.0" sortable="false" text="Step"> 
    <cellValueFactory> 
     <PropertyValueFactory property="stepName" /> 
    </cellValueFactory> 
    <cellFactory> 
     <TextFieldTableCell fx:factory="forTableColumn" /> 
    </cellFactory> 
</TableColumn> 

必要はありません。

<?import javafx.scene.control.cell.TextFieldTableCell?> 
+0

これは、SimpleStringPropertiesを介してモデルオブジェクトの値を変更するのに十分であると考えられますか?または私は何かを逃している? – Leprechaun

+0

@Leprechaunプロパティ(例えば 'StringProperty stepNameProperty()')を返すプロパティゲッターがある限り、動作するはずです。http://stackoverflow.com/documentation/javafx/2229/tableview/7289/propertyvaluefactory#tを参照してください。 = 201608121148083945414 – fabian

関連する問題