当前位置: 首页 > 知识库问答 >
问题:

如何让一个TabPane填充它的父级?

房育
2023-03-14

我的TabPane似乎只能水平填充其宽度,而不能垂直填充。我现在的解决方法是这样做:

    stage.getScene().heightProperty().addListener(new ChangeListener<Number>() {

      @Override
      public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
        System.out.println("height changed");
        tabPane.setPrefHeight(newValue.doubleValue());
      }
    });

但是,如果我使用该高度,它显然比实际保留的区域大(在TabPane上方有一个菜单栏)。(或者它是否适当地调整了它的大小?它也有点感觉不对,我必须设置简单的布尔值,因为它的行为完全符合水平变化的预期。

场景是这样设置的:

public static ResourceBundle BUNDLE = ResourceBundle.getBundle("locales/Bundle", new Locale("en", "GB"));
Scene scene = new Scene(new VBox(0), 800, 600);
MenuBar menuBar = new MenuBar();
Menu menuStart = new Menu(BUNDLE.getString("menu.start"));
Menu menuView = new Menu(BUNDLE.getString("menu.view"));
Menu menuHelp = new Menu(BUNDLE.getString("menu.help"));
menuBar.getMenus().addAll(menuStart, menuView, menuHelp);

((VBox) stage.getScene().getRoot()).getChildren().add(menuBar);
TabPane tabPane = new TabPane();
((VBox) stage.getScene().getRoot()).getChildren().add(tabPane);
stage.setScene(scene);
stage.show();

当然还有更多的代码,但它只包含与拖放相关的侦听器,并且这个问题发生在他们中的任何一个做任何事情之前(每次他们做某事时都会打印到控制台)。

选项卡设置:

final Tab tab = new Tab();
final Label label = new Label("Tab" +text);
tab.setGraphic(label);
StackPane pane = new StackPane();
int red = rng.nextInt(256);
int green = rng.nextInt(256);
int blue = rng.nextInt(256);
String style = String.format("-fx-background-color: rgb(%d, %d, %d);", red, green, blue);
pane.setStyle(style);
Label label = new Label("This is tab " + text);
label.setStyle(String.format("-fx-text-fill: rgb(%d, %d, %d);", 256 - red, 256 - green, 256 - blue));
pane.setPrefSize(500, 500);
pane.getChildren().add(label);
tab.setContent(pane);

这是来自 如何在选项卡窗格之间拖放选项卡节点

共有1个答案

澹台庆
2023-03-14

VBox。setVgrow(tabPane,Priority.ALWAYS)

 类似资料:
  • 问题内容: 我从这里的pandas DataFrame文档开始:http ://pandas.pydata.org/pandas-docs/stable/dsintro.html 我想在时间序列类型的计算中用值迭代地填充DataFrame。所以基本上,我想用列A,B和时间戳记行(全为0或全部为NaN)初始化DataFrame。 然后,我将添加初始值,然后遍历此数据,计算出大约某行之前的新行row[

  • 例如,如果我有一个Person父类和一个学生扩展Person子类,是否有办法实现equals()或hashCode()函数,其中它们的实例不会彼此相等? 假设Person类有字段name和age。学生类具有字段等级和以下构造函数: 如果一个是Person的实例,另一个是Student的实例,那么我如何创建两个具有匹配字段的实例,但如果其中一个是该实例,那么它将返回false? 是否可以使stude

  • 我正在使用作为覆盖层。它应该和它的父容器一样宽和一样高。然而,由于某种奇怪的原因,它不是垂直填充其父级的(而是水平填充)。下面是相关的XML: 使用上面的代码,覆盖层也不可见(其高度为)。当我在内部放置时,它会展开以适应。简而言之,它的行为就好像它的高度被设置为。 我如何强制它装满它的容器,同时让它空着?

  • 问题内容: 我在Pandas DataFrame中有一列具有连续数字的列。 我想将所有这些值更改为一个简单的字符串,例如“ foo”,导致 问题答案: 只需选择该列并像往常一样分配: 分配标量值会将所有行设置为相同的标量值

  • 我找到了这个答案,但它似乎已经过时了,或者不适合我的情况。 我(和我班的其他同学)正在尝试调整网格窗格的大小,以填充整个场景。下面是它现在在SceneBuilder中的样子: 如果你看不到图像:它只是一个3x3的GridPane(我的层次中唯一的元素)的图像,其周围是GridPane的剩余场景的“灰色空间”。 这是我的主要代码: 这是我的控制器代码: 这是我的.fxml文件中的代码(在我们的类中,

  • 问题内容: 我设法根据矩阵内的一个指定数组(即数组内的数组)生成了一系列列表项。 我希望能够将一个变量(表示一个数组)传递给一个函数,以便它可以根据传递到其中的数组吐出一个无序列表,其中填充了列表项。 问题: 该函数一次只能使用一个数组 它还会在标记中产生逗号(大概是因为它将数组转换为字符串) 解决方案需要: 假设DOM中不存在无序列表 能够接受传递到它的不同阵列(,等) 生成没有逗号的列表项 J