Modal中的片段BarChart未更新-TornadoFX

时间:2019-01-09 11:02:00

标签: kotlin tornadofx

我创建了一个片段来容纳BarChartScrollPane-最终结果将是可滚动的直方图。

我正在使用openModal方法以单独的模式创建这些新片段。

我遇到的问题是,当我调用BarChart方法时,loadData似乎没有更新,如下所示:

class Histogram : Fragment() {


override val root = vbox{

    hgrow = Priority.ALWAYS
    vgrow = Priority.ALWAYS

    style{
        minWidth = 1280.px
        minHeight = 180.px
    }

    hbox{
        hgrow = Priority.ALWAYS
    }


}

private val bar = ScrollBar()

private var barChart = barchart("bar", CategoryAxis(), NumberAxis()){

    barGap = 0.0
    categoryGap = -1.0

    hgrow = Priority.ALWAYS
    vgrow = Priority.ALWAYS

    style{
        minWidth = 640.px
        minHeight = 240.px
        maxHeight = 480.px

    }

    isLegendVisible = false

}

private val s = XYChart.Series<String, Number>()

init{

    root.add(barChart)
    root.add(bar)

}


fun loadData(h: AlignmentHistogram){

    s.data.add(XYChart.Data<String, Number>("asd", 2))

    barChart.title = h.rname

   /* for(i in 0..MAX_DATASET_SIZE){
        if(i > h.histogram.size){
            break
        }
        val data = XYChart.Data<String, Int>((h.firstPosition + i + 1).toString(), (h.histogram[i]))
        println(data)
        s.data.add(data)
    }*/


    s.data.add(XYChart.Data<String, Number>("asasdd", 5))

    s.name = h.rname

    barChart.data.add(s)

}

}

AlignmentHistogram只是一个POJO,其中包含直方图的数据和其他一些细节。

我使用以下代码调用该片段:

    val stage = Stage()
    stage.title = "${pointer.rname} - ${selectedFile.file.name}"

    val view = Histogram()
    view.loadData(h)

    val parent = StackPane()
    stage.scene = Scene(parent, 1280.0, 360.0)

    view.openModal(StageStyle.UTILITY, Modality.NONE, false, stage, false, true)

尽管调用了barChart.data.add(s)

,但结果只是新模态中的空直方图

有什么想法吗?预先感谢!

1 个答案:

答案 0 :(得分:0)

没关系,我通过将POJO作为范围传递并将设置代码放入sentence块中来解决此问题。

本文对范围部分有所帮助:

Tornadofx - How to pass parameter to Fragment on every instance