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

滚动条中的GridPane,拉伸空白空间

邰胤
2023-03-14

我正在使用javafx构建一个GUI,包括一个带有菜单栏的GridPane和另一个GridPane。我希望第二个GridPane是可滚动的,所以我将它放入一个scroll pane“new scroll pane(grid 2)”,并将其添加到第一个GridPane中。不幸的是,ScrollPane的内容不再水平拉伸,如果窗口大小改变,什么是需要的。

这是一张图片,应该可以澄清问题:http://img5.fotos-hochladen.net/uploads/scrollpaneemptwjpv2084xm.png(不能使用sof-tool,因为声誉

我想有大量的TitlePages,前面有一个按钮,可以滚动(不像菜单,它应该保持在顶部)。

如果我只是将第二个网格窗格添加到第一个网格窗格,它的拉伸方式是正确的,因此我想知道为什么滚动窗格或其元素不能拉伸,以及如何拉伸。

我发布你的代码,谢谢你阅读这个,谢谢你的努力!

package main;

import javafx.application.Platform;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.embed.swing.JFXPanel;
import javafx.geometry.Bounds;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text; 
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class MainGUI6 extends JFrame {

    private static final long serialVersionUID = -8824577253071530315L;
    JFXPanel panel;
    Scene scene;
    boolean wait = true;

    public MainGUI6() {
        panel = new JFXPanel();
        Platform.runLater(new Runnable() {
            @Override
            public void run() {

                GridPane grid = new GridPane();
                scene = new Scene(grid, 1000, 1000);
                grid.setVgap(4);
                grid.setPadding(new Insets(5, 5, 5, 5));

                //Menu
                final Menu menu1 = new Menu("Menu1");
                final Menu menu2 = new Menu("Menu2");
                final Menu menu3 = new Menu("Menu3");
                MenuBar menuBar = new MenuBar();
                menuBar.getMenus().addAll(menu1, menu2, menu3);
                grid.add(menuBar, 0, 0);
                grid.setHgrow(menuBar, Priority.ALWAYS);

                //Second grid
                GridPane grid2 = new GridPane();

                //Buttons
                Button b1 = new Button("ButtonI1");
                Button b2 = new Button("ButtonI2");
                Button b3 = new Button("ButtonI3");
                grid2.add(b1, 0, 0);
                grid2.add(b2, 0, 1);
                grid2.add(b3, 0, 2);

                //TitledPanes
                TitledPane tp1 = new TitledPane("TitledPane1", new Button("Button1"));
                TitledPane tp2 = new TitledPane("TitledPane2", new Button("Button2"));
                TitledPane tp3 = new TitledPane("TitledPane3", new Button("Button3"));
                grid2.add(tp1, 1, 0);
                grid2.add(tp2, 1, 1);
                grid2.add(tp3, 1, 2);
                grid2.setHgrow(tp1, Priority.ALWAYS);
                grid2.setHgrow(tp2, Priority.ALWAYS);
                grid2.setHgrow(tp3, Priority.ALWAYS);

                ScrollPane sp = new ScrollPane(grid2);
            grid.add(sp, 0, 1);
                grid.setHgrow(sp, Priority.ALWAYS);

                panel.setScene(scene);
                wait = false;
            }
        });
        this.getContentPane().add(panel);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(500, 500);
        this.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new MainGUI6();
            }
        });
    }
}

共有1个答案

訾淇
2023-03-14

您的ScrollPane缺少以下内容:

sp.setFitToWidth(true);

引用相应的API文档:

如果为 true 并且包含的节点是可调整大小的节点,则该节点将保持调整大小以匹配 ScrollPane 视区的宽度。如果包含的节点不是可调整大小的节点,则忽略此值。

 类似资料:
  • 问题内容: 我试图遵循此处的基本动画教程,并对其进行调整以显示已经计算出的数据集,而不是每帧都对函数进行评估,但是却陷入了困境。我的数据集包含列表中包含的随时间的XY坐标,并且我试图创建一个动画,使其跟踪从数据集的开头到结尾的一条线,每0.1秒显示1个新点。对我要去哪里有帮助吗? 编辑:该代码运行时没有错误,但是生成了一个空白的绘图窗口,其中没有显示点/线并且没有动画。数据集已正确生成,并且在静态

  • 我使用,并希望显示玩家得分的条形图,得分在y轴上,玩家的游戏在x轴上分组。 例如 由于玩家不必玩相同数量的游戏,因此在创建数据集时会产生大量空白,因为它试图为玩家2绘制一个条 有谁能帮我把这个空白处补上吗?理论上,玩家1可以继续玩100场游戏,而玩家2和3只玩几场,所以这看起来很荒谬!我是JFreeChart的新手,所以可能有一个明显的解决方案! 提前感谢您的帮助。

  • 问题内容: 我正在Windows PC上工作,并且有cygwin!我将我所有的jars组织在几个目录中的一个目录下!我正在编写一个脚本,以通过遍历作为参数传递的目录来设置,如下所示: 每当在目录中有空格传递并且我运行时,都会抛出错误,指出未找到该类,因为CLASSPATH变量在之后被拆分。 有人可以帮我解决这个问题吗? 问题答案: 看到这篇文章。 您可以将完整的类路径包含在双qoutes中 或类路

  • 我试图将TableView定位在我的ViewController视图中,但在导航栏的底部和桌面的顶部之间留下44的高度差距。然后,我想在该间隙内放置一个UITextField,作为一个固定的标题。出于某种原因,TableView在“原型单元格”的开头上方有一个空白。它只是白色的空间。这是故事板中的样子。 查看应用程序显示时,其外观如下所示:

  • 我一直在努力在MySQL中输入空白值。例如,代码: 不会工作。我总是收到以下错误: 但是,当我运行以下两个语句之一时: 或 这个查询工作得很好。column2的默认值已设置为“0”,仍然没有运气。 我面临的问题是所有表中的所有列。我的申请将有空白条目(无法更改)。这个功能以前工作得很好,当我将应用程序代码转移到另一个服务器时,我开始出现这个错误。 MySQL服务器版本:8.0.22-MySQL社区

  • 我正在尝试创建一个动画,其中包含所有卡片的div从右到左滑动,这是我已经实现的。 问题是在div的末尾和重置时有一个巨大的白色空隙,我通过指定在时div应该已经翻译了来解决这个问题,但是这会在轮播重置时引起口吃。 有没有我可以把动画重置为0%而不会造成口吃的效果?代码在下面