2016-11-18 8 views
0

私は、fxmlだけを使ってTableViewCellを作りたいです。私はどうすればそれをすることができます。JAVAFX。 FXMLを使用してTableViewCellを編集するにはどうすればよいですか?

は、今私は、モデルクラスにDuplicateFileInfo

class DuplicateFileInfo(var id: Long, var path: String, var editableField: String?) {} 

を持っていると私は私が編集可能なテーブルビューを持っている。この場合、テーブルビュー

<TableView AnchorPane.bottomAnchor="50.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" 
       editable="true" 
       layoutX="121.0" layoutY="6.0" fx:id="duplicatesList"> 
    <columns> 
     <TableColumn prefWidth="300.0" text="%file.filename" fx:id="fileNameColumn" editable="false"> 
      <cellValueFactory> 
       <PropertyValueFactory property="path" /> 
      </cellValueFactory> 
     </TableColumn> 
     <TableColumn prefWidth="150.0" text="%file.EditableField" fx:id="editableColumn"> 
      <cellValueFactory> 
       <PropertyValueFactory property="editableField" /> 
      </cellValueFactory> 
      <cellFactory> 
       <TextFieldTableCell fx:factory="forTableColumn" /> 
      </cellFactory> 
     </TableColumn> 
    </columns> 
</TableView> 

を持っています。ただし、編集が完了した後に値をモデル化することはできません。 コード化せずにこの作業を行うことはできますか?

+0

ようでなければなりません。 – fabian

+0

しかし、それはばかです。 コーディングなしでプロパティを読み取ることができます。私はセルをコードなしで編集可能にすることができます。しかし、私はコーディングせずに編集の結果を入れることはできませんでした。 –

+1

@AlexeyVashchenkov [JavaFX Property Pattern](http://www.oracle.com/pls/topic/lookup?ctx=javase80&id=JFXBD107)に続いて、モデルクラス 'DuplicateFileInfo'を記述すると、それらのファクトリのデフォルト実装あなたは働くことを使用しています。 –

答えて

0

ありがとうございますJames_D 私は結果を得ることができました。

kotlinとモデルクラスがありません適切アイテム・クラスをcoddddddddddddingまたは代替的に、あまりにも符号化する必要がある適切な `onEditCommit`ハンドラを使用せずにこの

class DuplicateFileInfo(id: Long, path: String, shouldBeDeleted: Boolean) { 

    private val id: LongProperty 
    private val path: StringProperty 
    private val shouldBeDeleted: BooleanProperty 

    init { 
     this.id = SimpleLongProperty(id) 
     this.path = SimpleStringProperty(path) 
     this.shouldBeDeleted = SimpleBooleanProperty(shouldBeDeleted) 
    } 

    fun getId(): Long { 
     return id.get() 
    } 

    fun idProperty(): LongProperty { 
     return id 
    } 

    fun setId(id: Long) { 
     this.id.set(id) 
    } 

    fun getPath(): String { 
     return path.get() 
    } 

    fun pathProperty(): StringProperty { 
     return path 
    } 

    fun setPath(path: String) { 
     this.path.set(path) 
    } 

    var isShouldBeDeleted: Boolean 
     get() = shouldBeDeleted.get() 
     set(shouldBeDeleted) = this.shouldBeDeleted.set(shouldBeDeleted) 

    fun shouldBeDeletedProperty(): BooleanProperty { 
     return shouldBeDeleted 
    } 

    override fun toString(): String { 
     val sb = StringBuffer("DuplicateFileInfo{") 
     sb.append("id=").append(id.get()) 
     sb.append(", path=").append(path.get()) 
     sb.append(", shouldBeDeleted=").append(shouldBeDeleted.get()) 
     sb.append('}') 
     return sb.toString() 
    } 
} 
関連する問題