簡體   English   中英

更新JavaFX Label不適用於DataBinding

[英]Updating JavaFX Label doesn't work with DataBinding

我試圖在選項卡中寫“自己的”日志,但在使用天真的解決方案更新標簽時遇到了問題。

因此,在Google搜索之后,我在這里簽出了該解決方案: 在JavaFx標簽中顯示更改的值

我不知道我是否做對了一切,但不幸的是,這種解決方案對我不起作用。

final static Label logLabel = new Label();
final static SimpleStringProperty logString = new SimpleStringProperty("test");
...
...
     public void start(Stage primaryStage) {


    TabPane tabPane = new TabPane();
    tabPane.getTabs().add(createSettingsTab());
    tabPane.getTabs().add(createParticipantTab());
    tabPane.getTabs().add(createSpectatorTab());
    tabPane.getTabs().add(createOverviewTab());
    tabPane.getTabs().add(createTournamentTab());
    tabPane.getTabs().add(createLogTab());
    tabPane.setTabClosingPolicy(TabClosingPolicy.UNAVAILABLE);


    Scene scene = new Scene(tabPane, 1200, 800);

    primaryStage.setScene(scene);
    primaryStage.setResizable(true);




    primaryStage.show();
}


private Tab createLogTab() {
// TODO Auto-generated method stub
            logLabel.textProperty().bind(logString);    
            Tab tab = new Tab("Log");
            tab.setContent(logLabel);
            return tab;
        }

我得到了以下行來初始化Label和設置新文本,我這樣做:

logString.set(logString.get() + "foo");

日志標簽保持空白...

我將不勝感激! 謝謝!

編輯//這是我能想到的唯一有用的mcve。 正如我所說的,用於創建其他選項卡的其他創建方法未利用標簽或SimpleStringProperty

這是與標簽有關的無效按鈕。

    buttonLoadConfig.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent e) {
                    System.out.println("test");
                    logString.set(logString.get() + "\ttest");

                    FileChooser fileChooser = new FileChooser();
                    fileChooser.setTitle("Choose Config");
                    File config = fileChooser.showOpenDialog(new Stage());
    }
});

使用靜態成員通常不是一個好主意,可能會助長您的問題。

您當前編寫的代碼可以有許多選項卡,但只有一個標簽。 您試圖將相同的標簽添加到多個選項卡。 但是,這樣做時,由於關於JavaFX Scenegraph如何工作的規則,標簽將從先前的選項卡中刪除。

請參閱節點文檔

如果程序將子節點添加到父節點(包括組,區域等),並且該節點已經是其他父節點或場景根節點的子節點,則該節點會自動(並以靜默方式)從其先前的父節點中移除。

因此綁定是有效的,但是由於上述規則和編寫其余代碼的方式,整個程序很可能無法按您期望的方式運行。

如果仍然有問題,請使用mcve更新您的問題。

暫無
暫無

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

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