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

JavaFX GridPane inside ScrollPane inside GridPane无法设置ScrollPane

公西英叡
2023-03-14

大家好!

我有一个简单的问题:我正在使用FXML文件,我已经做了这样的布局:

使用此层次结构:(顶部GridPane控制器被高亮显示-它位于VBox中)

我的问题是,我在ScrollPane(在另一个GridPane容器内)内动态地向GridPane添加行;我不能添加超过3列(显然是Vbox容器的大小),但是如果我删除滚动窗格,我可以添加尽可能多的行但是行正在消失,因为它们在Vbox/GridPane范围之外...

有没有可能做我不想做的事情(GridPane在ScrollPane中的GridPane行)?我以为它会"开箱即用",但似乎真的不是:-(

这是因为ScrollPane最大/最小(我玩了所有大小的容器和/或顶部容器-Vbox和ScrollPane-没有成功...)或者这是因为GridPane父级设置了最大高度,并且阻止了ScrollPane高度增长?

我尝试过这个帖子解决方案:如何滚动以使滚动窗格内容中的节点可见?没有任何成功:-(

有什么想法吗?向所有人问好!

共有1个答案

方风华
2023-03-14

要回答这个问题的中间位置:“有可能做我想做的事吗?下面是它的fxml代码(不介意常量,我只是将其放在scene builder中):

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<GridPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8">
  <columnConstraints>
    <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
    <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
  </columnConstraints>
  <rowConstraints>
    <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
    <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
    <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
  </rowConstraints>
<children><ScrollPane prefHeight="200.0" prefWidth="200.0">
<content><GridPane prefHeight="132.0" prefWidth="297.0">
  <columnConstraints>
    <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
    <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
  </columnConstraints>
  <rowConstraints>
    <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
    <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
    <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
  </rowConstraints>
</GridPane>
</content></ScrollPane>
</children>
</GridPane>

使其具有额外的行/列而不使所有现有行变小的滚动条的技巧是,每次动态添加行时调整最内侧网格窗格的高度,这将确保网格窗格的大小超过滚动窗格因此,使它如此滚动窗格'滚动'

例如(伪代码):

onButtonPress{
    resizeGridPane(sizeOfRow+paddingBetweenRows);
    AddRowInDesiredLocation(location);
}

我想那会给你想要的效果。

编辑

注意到您的vbox位于网格窗格中的滚动窗格中后,您必须适当地调整vbox和网格窗格的大小,以查看滚动窗格的滚动效果,如果您只调整网格窗格的大小,您将只获得以下行是连续的越来越小。

 类似资料:
  • JSON查询应该可以使用多个搜索参数。为此,服务器需要获取每个参数作为搜索对象,例如: 我们在swagger中使用下面的声明: 问题是,从swagger生成的PHP库创建的请求如下: 这是服务器无法使用的。为了解决这个问题,我发现可以通过将属性“collectionFormat”设置为csv而不是multi来影响这个行为。 我的问题是,声明取自示例页面https://swagger.io/docs

  • 问题内容: 我正在尝试在Django中开发示例项目,并且在运行syncdb命令时遇到错误。 这是我的项目结构的样子: / Users / django_demo / godjango / bookings: 我的manage.py文件如下: 我的PYTHONPATH和DJANGO_SETTINGS_MODULE设置如下 我的WSGI.py文件如下所示: 当我运行python manage.py s

  • 我试图在具有动态输入字段的pdf表单中设置值,但流编写器不断出错。 我研究了填写表格(http://mail-archives.apache.org/mod_mbox/pdfbox-users/201510.mbox/browser)的步骤,并阅读了类似的问题结合XFA与PDFBox和PDFBox臃肿的PDF文件大小 有什么不同的方法吗?有什么建议可以引导我走向正确的方向吗? 这是我的代码 这就是

  • 我在设置kubernetes ingress-nginx时遇到了麻烦,以便在外部公开我的应用程序。下面是我所做的步骤: 应用程序部署: 创建了名为Ingress的命名空间 部署了statefulset集资源,用于在入口命名空间中描述我的应用程序(我们称之为testapp) 创建了ClusterIP服务,使我的应用程序在kube集群(testapp)中的入口命名空间中可用 入口nginx设置: nu

  • 我正在尝试执行以下操作以避免稍后未选中的转换: 强制取消行上未选中得强制转换: 我如何做到这一点而不需要抑制?

  • 所以我告诉IDEA它应该使用什么JDK,但它仍然要求我设置一个JDK。这是一个窃听器还是我遗漏了什么?我能应用任何变通方法使一切照常工作吗?

  • 我们在本地网络的共享环境中使用XAMPP。所有项目都有默认的mysql用户名和密码。最近我试图更改一个项目的用户名和密码。现在我无法访问phpmyadmin。它只显示以下消息: phpMyAdmin试图连接到MySQL服务器,但服务器拒绝了连接。确保您的用户名和密码与管理员提供的MySQL服务器的配置一致。 现在没有人能够访问phpmyadmin。我怎样才能解决这个问题?

  • 问题内容: 我想使用安装json2csv,但收到此错误: 有关如何在MacOS上解决此问题的任何帮助? 问题答案: [更新:从Go 1.8开始,默认为,但是如果您想了解布局,自定义布局等,可能仍会觉得有用。] 官方的Go网站讨论了GOPATH以及如何布置工作空间目录。 -在您的Shell中运行它,然后将其添加到或等效版本中,以便将来为您设置。Go会在安装包,以及,子目录那里。您需要将自己的软件包放