标签不会显示在javafx中

标签不会显示在javafx中,javafx,properties,borderpane,Javafx,Properties,Borderpane,我的应用程序中有一个边框窗格。在底部,我想设置一个标签来显示程序的当前状态,例如:“就绪”、“读取数据”等等 启动应用程序时,不会显示底部部分。直到我用鼠标手动改变了窗口的高度后,它才突然弹出。有人知道为什么会这样吗?我想这和我的听众有关 主要 fxml 控制器 package Controller; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import jav

我的应用程序中有一个边框窗格。在底部,我想设置一个标签来显示程序的当前状态,例如:“就绪”、“读取数据”等等

启动应用程序时,不会显示底部部分。直到我用鼠标手动改变了窗口的高度后,它才突然弹出。有人知道为什么会这样吗?我想这和我的听众有关

主要

fxml


控制器

package Controller;

import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
public class MainWindow_Controller {

    @FXML
    private BorderPane root;

    @FXML
    private TableView tvTestCases;

    @FXML
    private TableView<?> tvReports;

    @FXML
    MenuBar mbMenuBar;
    @FXML
    private TabPane tpTabs;

    @FXML
    private Label lInfo;

    /**
     * Initialize method to read filepaths and set listeners.
     */
    public void initialize() {
        tpTabs.setBackground(new Background(new BackgroundFill(Color.BISQUE, null, null)));
        loadListener();
        lInfo.setText("Bereit");
    }

    public void loadListener() {
        root.widthProperty().addListener(new ChangeListener<Number>() {
            @Override
            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
                tpTabs.setPrefWidth(root.getWidth());
                tvTestCases.setPrefWidth(root.getWidth());
                tvReports.setPrefWidth(root.getWidth());
            }
        });

        root.heightProperty().addListener(new ChangeListener<Number>() {
            @Override
            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {

                tpTabs.setPrefHeight(root.getHeight() - mbMenuBar.getHeight()-lInfo.getHeight());
                tvTestCases.setPrefHeight(root.getHeight() - mbMenuBar.getHeight()-lInfo.getHeight());
                tvReports.setPrefHeight(root.getHeight()-mbMenuBar.getHeight()-lInfo.getHeight());
            }
        });
    }
}
包装控制器;
导入javafx.beans.value.ChangeListener;
导入javafx.beans.value.observeValue;
导入javafx.fxml.fxml;
导入javafx.scene.control.*;
导入javafx.scene.layout.Background;
导入javafx.scene.layout.BackgroundFill;
导入javafx.scene.layout.BorderPane;
导入javafx.scene.paint.Color;
公共类主窗口控制器{
@FXML
私有边界根;
@FXML
私有TableView测试用例;
@FXML
私人TableView电视报告;
@FXML
MenuBar mbMenuBar;
@FXML
私有选项卡;
@FXML
自有品牌lInfo;
/**
*初始化方法以读取文件路径并设置侦听器。
*/
公共无效初始化(){
tpTabs.setBackground(新背景(新背景填充(Color.BISQUE,null,null));
loadListener();
lInfo.setText(“Bereit”);
}
公共void loadListener(){
root.widthProperty().addListener(新的ChangeListener()){
@凌驾

更改公众假期(ObservalEvalue您不应该在布局期间调整节点的首选大小。这里发生的事情是,在设置根大小之前,通过计算首选的/min/max size来确定场景大小。。设置根大小后,在
loadListener
中添加的侦听器将更改不再使用的首选大小为所有节点留出足够的空间。由于
场景
现在强制其大小小于其根的实际最小大小,因此布局在某种程度上适应了这一点,在这种情况下,通过将
标签
移出视图

不要添加这些侦听器,并将调整大小的操作保留在
边框窗格
中。要使其正常工作,您需要将最大大小设置为其他大小

以下
的开始标记仅使用默认值()。这样
选项卡窗格可以任意变大:



请提供一个示例来说明问题。首先,为什么您要手动控制
边框窗格
的子项的大小(
边框窗格
应该为您管理)?其次,您的第二个问题应该拆分为另一个问题,因为它与第一个问题无关。(快速提示:不要在JavaFX应用程序线程中查询数据库)@kleopatra为reproduction@Jai感谢您对数据库查询的提示。似乎对我很有帮助。worksforme。。。。
package Controller;

import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
public class MainWindow_Controller {

    @FXML
    private BorderPane root;

    @FXML
    private TableView tvTestCases;

    @FXML
    private TableView<?> tvReports;

    @FXML
    MenuBar mbMenuBar;
    @FXML
    private TabPane tpTabs;

    @FXML
    private Label lInfo;

    /**
     * Initialize method to read filepaths and set listeners.
     */
    public void initialize() {
        tpTabs.setBackground(new Background(new BackgroundFill(Color.BISQUE, null, null)));
        loadListener();
        lInfo.setText("Bereit");
    }

    public void loadListener() {
        root.widthProperty().addListener(new ChangeListener<Number>() {
            @Override
            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
                tpTabs.setPrefWidth(root.getWidth());
                tvTestCases.setPrefWidth(root.getWidth());
                tvReports.setPrefWidth(root.getWidth());
            }
        });

        root.heightProperty().addListener(new ChangeListener<Number>() {
            @Override
            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {

                tpTabs.setPrefHeight(root.getHeight() - mbMenuBar.getHeight()-lInfo.getHeight());
                tvTestCases.setPrefHeight(root.getHeight() - mbMenuBar.getHeight()-lInfo.getHeight());
                tvReports.setPrefHeight(root.getHeight()-mbMenuBar.getHeight()-lInfo.getHeight());
            }
        });
    }
}