2017-07-20 3 views
0

Relativ neu zu Scala und ScalaFX, aber ich habe mit Java und JavaFX zuvor gearbeitet. Meine Frage ist, ob es eine Möglichkeit gibt, Parameter an ein benutzerdefiniertes TreeItem zu übergeben.Übergabe von Parametern an benutzerdefinierte TreeItem-Konstruktor

-Code sieht wie folgt aus:

Ich möchte, dies zu tun:

def makePictureHolder(picture: Picture): TreeItem[Picture] = { 
    new TemporaryHolderTreeItem(picture) 
    } 

Mit dieser: Nachricht

class TemporaryHolderTreeItem extends TreeItem[Picture] { 

    private val gridPane = new GridPane 
    private val progressBar = new ProgressBar { 
    prefWidth = 250 
    } 
    private val columnConstraints = ObservableBuffer(
    new ColumnConstraints(500), 
    new ColumnConstraints(250) 
) 

    def this(picture: Picture) = this() { 
    value = picture 

    gridPane.addColumn(0, new Label(resourceBundle 
     .getString("uploadHolderText") + " " + picture.path)) 

    gridPane.addColumn(1, progressBar) 

    gridPane.columnConstraints = columnConstraints 
    graphic = gridPane 
    } 
} 

Aber ich bekomme diese Fehlermeldung:

TemporaryHolderTreeItem.scala:24: com.nodefactory.diehard.gail.views.TemporaryHolderTreeItem does not take parameters 
[error] def this(picture: Picture) = this() { 
[error]    

Ich habe versucht, den Parameter zu platzieren Das Bild in der Klassenargumentliste, aber das funktioniert auch nicht. So:

class TemporaryHolderTreeItem(picture: Picture) extends TreeItem[Picture](picture) { 

    private val gridPane = new GridPane 
    private val progressBar = new ProgressBar { 
    prefWidth = 250 
    } 
    private val columnConstraints = ObservableBuffer(
    new ColumnConstraints(500), 
    new ColumnConstraints(250) 
) 

    def this() = this() { 
    gridPane.addColumn(0, new Label(resourceBundle 
     .getString("uploadHolderText") + " " + picture.path)) 

    gridPane.addColumn(1, progressBar) 

    gridPane.columnConstraints = columnConstraints 
    graphic = gridPane 
    } 
} 

Wie oben Fehlermeldung.

Antwort

0

Lösung: ich vergessen, dass der Standard-Konstruktor in Scala außerhalb der Funktionen ist, so dass ich nicht brauchen def diese() = diese() {...}

Statt dessen arbeitete:

class TemporaryHolderTreeItem(picture: Picture) extends TreeItem[Picture](picture) { 

    private val gridPane = new GridPane 
    private val progressBar = new ProgressBar { 
    prefWidth = 250 
    } 
    private val columnConstraints = ObservableBuffer(
    new ColumnConstraints(500), 
    new ColumnConstraints(250) 
) 

    gridPane.addColumn(0, new Label(resourceBundle 
    .getString("uploadHolderText") + " " + picture.path)) 

    gridPane.addColumn(1, progressBar) 

    gridPane.columnConstraints = columnConstraints 
    graphic = gridPane 

} 
Verwandte Themen