0

原谅可怕的通用 GridPane 名称......一旦我得到一些输入,它就会被更改。

我正在向 GridPane 添加项目,它需要一个按钮,它需要一个标签......除了这个 int 之外,它几乎不需要任何东西。

        int[] listObjA = {312,23,241};

        GridPane gridpane = new GridPane();

        gridpane.add(new Label("Item Listing"), 1, 1);
        gridpane.add(listObjA[0], 1, 2);

当然,这样留下告诉我“int 不能转换为 Node”。有什么建议吗?我对在 Java 中简单地打印变量有多么困难感到困惑。顺便说一句,它必须是一个变量,因为我将有一个不断更改它的方法,所以简单地将其更改为 new Label("312") 不是一种选择。

4

3 回答 3

0

数组的元素int[] listObjA = {312,23,241};无法解析为节点类型。而不是使用 that ,您可以将其用作

           Label firstLabel=new Label("312");
           Label secondLabel=new Label("23");
           Label thirdLabel=new Label("241");
           gridpane.add(firstLabel, x, y);
           gridpane.add(secondLabel, x,y);
           gridpane.add(thirdLabel, x, y);

其中 x , y 是变量,包含要插入节点的位置。

于 2016-03-26T03:54:16.763 回答
0

Java 是一种强类型语言。你不能假装 anint是某种 UI 组件。

为数组的每个元素创建一个标签:

int[] listObjA = {312,23,241};

GridPane gridpane = new GridPane();

gridpane.add(new Label("Item Listing"), 0, 0);

for (int i = 0 ; i < listObjA.length; i++) {
    Label label = new Label(Integer.toString(listObjA[i]));
    gridpane.add(label, i+1, 0);
}
于 2016-03-26T04:19:30.390 回答
0

如果您需要通过分配数据结构中的值来更改标签中的文本,则需要一个支持通知程序的其他部分更改的数据结构。ObservableList将是一种这样的数据结构。您可以使用绑定 API 将Labels 中的文本更改为您ObservableList的内容:

ObservableList<Integer> observableList = FXCollections.observableList(Arrays.asList(312, 23, 241));

GridPane gridpane = new GridPane();

gridpane.add(new Label("Item Listing"), 0, 0);

for (int i = 0, size = observableList.size(); i < size; i++) {
    Label l = new Label();
    // bind text to content at list position
    l.textProperty().bind(Bindings.valueAt(observableList, i).asString());
    gridpane.add(l, 0, i + 1);
}

在此处创建绑定意味着如果列表的内容发生更改,标签的内容会自动更新。例如

Scene scene = new Scene(gridpane);

scene.setOnMouseClicked(new EventHandler<MouseEvent>() {

    private int index;

    @Override
    public void handle(MouseEvent event) {
        int i = index++ % observableList.size();
        observableList.set(i, 10 + observableList.get(i));
    }
});

在 UI 显示的鼠标单击时将其中一个值增加 10。

于 2016-03-26T07:49:48.903 回答