Как динамически добавлять узлы в VBox в ScalaFX - PullRequest
2 голосов
/ 26 мая 2020

В моем приложении ScalaFX есть Button, который добавляет GridPane к VBox. Я попытался напрямую обновить дочерние элементы VBox в Button.onAction, но это привело к тому, что Button перестал отвечать после рендеринга первого добавленного GridPane. Теперь я пробую следующий код:


import scalafx.scene.{Node, Scene}
import scalafx.application.JFXApp
import scalafx.geometry.Insets
import scalafx.scene.control.{Button, Label}
import scalafx.scene.layout.{GridPane, VBox}
import scalafx.Includes._
import scalafx.collections.ObservableBuffer

object Gui extends JFXApp {

  stage = new JFXApp.PrimaryStage {
    title = "DSP Lab"
    scene = new Scene(320, 300) {

      val bufferOfNodes = new ObservableBuffer[Node]

      val vBox = new VBox {
        children = bufferOfNodes // assign ObservableBuffer to children
      }

      val addGridPaneButton = new Button {
        text = "Add GridPane to VBox"
        onAction = _ => {
          bufferOfNodes += getNewGridPane // update the ObservableBuffer
        }
      }

      content = List(addGridPaneButton, vBox)
    }
  }

  stage.setX(100)
  stage.setY(100)

  def getNewGridPane: GridPane = new GridPane {
    vgap = 5
    hgap = 10
    padding = Insets(20)

    val sampleFrequencyLabel = new Label("Sample Frequency:")
    val sampleFrequencyField = new DoubleField
    val amplitudeLabel = new Label("Amplitude:")
    val amplitudeField = new DoubleField
    add(sampleFrequencyLabel, 0, 0)
    add(sampleFrequencyField, 1, 0)
    add(amplitudeLabel, 0, 1)
    add(amplitudeField, 1, 1)
  }
}

При назначении VBox.children ObservableBuffer[Node] Button остается отзывчивым, а onAction добавляет GridPane к bufferOfNodes, но GridPane Кажется, что * s никогда не добавляются к VBox, и они никогда не отображаются.

Есть ли способ сделать это?

1 Ответ

3 голосов
/ 29 мая 2020

На этот вопрос был дан вопрос и ответ в списке рассылки ScalaFX-Users: https://groups.google.com/forum/?utm_medium=email&utm_source=footer&pli=1#! Topic / scalafx-users / 3IzGAnflUnU

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...