首页 > 解决方案 > 在显示时修改 javafx 标签属性

问题描述

我动态地将标签添加到一个空的 HBox以表示使用链接到按钮displayBox的宽度为 60.0 和随机高度的垂直条。genNewArray()这些条形图由MakeBar类传递并存储在静态数组MakeBar[] valueArray;中。为了稍后按高度对这些条进行排序,我首先运行了一个测试,使用startVisual()linked to使所有高度相同vizButton

问题是只有在整个循环完成后才会显示更改。我需要在循环运行时显示修改,即当它发生变化时。

控制器类:

public class SortContr implements Initializable {

    static MakeBar[] valueArray;

    private static Random random = new Random();

    @FXML
    private Label newRandArray;

    @FXML
    private Slider barNumSlider;

    @FXML
    private Button vizButton;

    @FXML
    private HBox displayBox;


    @FXML
    void genNewArray(MouseEvent event) {

        displayBox.getChildren().clear();
        int arrsize = (int) barNumSlider.getValue();
        valueArray = new MakeBar[arrsize];

        for (int i=0;i<arrsize;i++) {
            valueArray[i] = new MakeBar(random.nextInt(500));
            displayBox.getChildren().add(valueArray[i].getBar());
        }
        vizButton.setDisable(false);
    }


    @FXML
    void startVisual(ActionEvent event) throws InterruptedException {

        /*for (Node n:displayBox.getChildren()) {
            ((Label) n).setPrefHeight(60);
            n.setStyle("-fx-background-color: #8bff3a;");
            Thread.sleep(3000);
        }*/

        for (int i=0;i<valueArray.length;i++) {
            valueArray[i].modifyHeight(100);
            //System.out.println(i);
            Thread.sleep(1000);
        }

        vizButton.setDisable(true);
    }
}

点击可视化!: 循环期间

整个过程完成后。 循环执行后

制作吧:

public class MakeBar {

    @FXML
    private Label bar;

    MakeBar(int ht) {
        this.bar = new Label();
        this.bar.setPrefWidth(60.0);
        this.bar.setStyle("-fx-background-color: #5dade2;");
        this.bar.setPrefHeight(ht);
    }

    Label getBar() {
        return bar;
    }

    void modifyHeight(double newHeight) {
        this.bar.setPrefHeight(newHeight);
    }
}

我需要它来一次显示每个条形图。

我知道我可以在每次迭代后清除并加载小部件,但这似乎效率低下。主要问题在于startVisual()。我不太精通JavaFx。

我使用 IntellijIdea 和 SceneBuilder。

标签: javajavafx

解决方案


推荐阅读