簡體   English   中英

JavaFX:GridPane,add()一個整數作為標簽

[英]JavaFX: GridPane, add() an integer as a label

原諒可怕的通用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中簡單地打印一個變量有多困難感到困惑。 順便說一句,它必須是一個變量,因為我將有一個不斷地更改它的方法,因此,簡單地將其更改為新的Label(“ 312”)是不可行的。

數組int[] listObjA = {312,23,241};元素int[] listObjA = {312,23,241}; 無法解析為節點類型。 除了使用它,您還可以將其用作

           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是變量,其中包含您要插入Node的位置。

Java是一種強類型語言。 您不能僅僅假裝int是某種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);
}

如果需要通過在數據結構中分配值來更改標簽中的文本,則需要一種數據結構,該數據結構支持通知程序的其他部分進行更改。 ObservableList就是這樣一種數據結構。 您可以使用bindings API將Label的文本更改為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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM