- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我将 GridPane
包装在 ScrollPane
中,以便在将新行添加到网格时能够滚动它。
<BorderPane fx:id="SubmitStageBorderPane"
stylesheets="@../SubmitStageStyles.css"
xmlns="http://javafx.com/javafx/8.0.112-ea"
xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.SubmitStage">
<center>
<AnchorPane fx:id="SubmitStageAnchorPane">
<children>
<ScrollPane fx:id="GridscPane" hbarPolicy="NEVER" vbarPolicy="ALWAYS">
<content>
<GridPane fx:id="submitLayout" maxHeight="1080.0" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="500.0" prefWidth="700.0" stylesheets="@../SubmitStageStyles.css">
<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 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 minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<TextField fx:id="course1" promptText="Course name" GridPane.rowIndex="1">
<opaqueInsets>
<Insets />
</opaqueInsets>
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="course2" promptText="Cource name" GridPane.rowIndex="2">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="course3" promptText="Course name" GridPane.rowIndex="3">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="course4" promptText="Course name" GridPane.rowIndex="4">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TextField>
<Label alignment="CENTER_RIGHT" contentDisplay="CENTER" text="Grade:" GridPane.columnIndex="1" GridPane.rowIndex="1">
<font>
<Font name="Eras Demi ITC" size="21.0" />
</font>
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
<padding>
<Insets bottom="10.0" left="10.0" right="15.0" top="10.0" />
</padding>
</Label>
<Label alignment="CENTER_RIGHT" contentDisplay="CENTER" text="Grade:" GridPane.columnIndex="1" GridPane.rowIndex="2">
<font>
<Font name="Eras Demi ITC" size="21.0" />
</font>
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
<padding>
<Insets bottom="10.0" left="10.0" right="15.0" top="10.0" />
</padding>
</Label>
<Label alignment="CENTER_RIGHT" contentDisplay="CENTER" text="Grade:" GridPane.columnIndex="1" GridPane.rowIndex="3">
<padding>
<Insets bottom="10.0" left="10.0" right="15.0" top="10.0" />
</padding>
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
<font>
<Font name="Eras Demi ITC" size="21.0" />
</font>
</Label>
<Label alignment="CENTER_RIGHT" contentDisplay="CENTER" text="Grade:" GridPane.columnIndex="1" GridPane.rowIndex="4">
<font>
<Font name="Eras Demi ITC" size="21.0" />
</font>
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
<padding>
<Insets bottom="10.0" left="10.0" right="15.0" top="10.0" />
</padding>
</Label>
<TextField fx:id="grade1" promptText="Enter the grade" GridPane.columnIndex="2" GridPane.rowIndex="1">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="grade2" promptText="Enter the grade" GridPane.columnIndex="2" GridPane.rowIndex="2">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="grade3" promptText="Enter the grade" GridPane.columnIndex="2" GridPane.rowIndex="3">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="grade4" promptText="Enter the grade" GridPane.columnIndex="2" GridPane.rowIndex="4">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TextField>
<Label alignment="CENTER_RIGHT" contentDisplay="CENTER" text="Credits:" GridPane.columnIndex="3" GridPane.rowIndex="1">
<font>
<Font name="Eras Demi ITC" size="21.0" />
</font>
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
<padding>
<Insets bottom="10.0" left="10.0" right="15.0" top="10.0" />
</padding>
</Label>
<Label alignment="CENTER_RIGHT" contentDisplay="CENTER" text="Credits:" GridPane.columnIndex="3" GridPane.rowIndex="2">
<padding>
<Insets bottom="10.0" left="10.0" right="15.0" top="10.0" />
</padding>
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
<font>
<Font name="Eras Demi ITC" size="21.0" />
</font>
</Label>
<Label alignment="CENTER_RIGHT" contentDisplay="CENTER" text="Credits:" GridPane.columnIndex="3" GridPane.rowIndex="3">
<font>
<Font name="Eras Demi ITC" size="21.0" />
</font>
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
<padding>
<Insets bottom="10.0" left="10.0" right="15.0" top="10.0" />
</padding>
</Label>
<Label alignment="CENTER_RIGHT" contentDisplay="CENTER" text="Credits:" GridPane.columnIndex="3" GridPane.rowIndex="4">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
<padding>
<Insets bottom="10.0" left="10.0" right="15.0" top="10.0" />
</padding>
<font>
<Font name="Eras Demi ITC" size="21.0" />
</font>
</Label>
<TextField fx:id="credit1" promptText="Course credit" GridPane.columnIndex="4" GridPane.rowIndex="1">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="credit2" promptText="Course credit" GridPane.columnIndex="4" GridPane.rowIndex="2">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="credit3" promptText="Course credit" GridPane.columnIndex="4" GridPane.rowIndex="3">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="credit4" promptText="Course credit" GridPane.columnIndex="4" GridPane.rowIndex="4">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TextField>
</children>
<opaqueInsets>
<Insets />
</opaqueInsets>
<padding>
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
</padding>
</GridPane>
</content>
</ScrollPane>
<Button fx:id="AddAnotherCourseButton" alignment="BOTTOM_CENTER" mnemonicParsing="false" onAction="#AddAnotherCourseClicked" text="ADD ANOTHER COURSE">
<font>
<Font name="Book Antiqua Bold" size="15.0" />
</font>
</Button>
</children>
</AnchorPane>
</center>
<top>
<MenuBar fx:id="SubmitStageMenuBar" BorderPane.alignment="CENTER">
<menus>
<Menu mnemonicParsing="false" text="File">
<items>
<MenuItem mnemonicParsing="false" text="Save" />
<MenuItem mnemonicParsing="false" text="Load" />
<SeparatorMenuItem mnemonicParsing="false" />
<MenuItem mnemonicParsing="false" text="Exit" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="About">
<items>
<MenuItem mnemonicParsing="false" text="Action 1" />
</items>
</Menu>
</menus>
</MenuBar>
</top>
</BorderPane>
我有一个按钮,每当单击它时,就会将包含元素的行添加到 GridPane
中。
public void AddAnotherCourseClicked(){
int rowCount = returnMaxRow();
TextField courseName = new TextField();
courseName.setPromptText("Course name");
submitLayout.setMargin(courseName, new Insets(5, 5, 5, 5));
Label gradeLabel = new Label("Grade:");
gradeLabel.setFont(Font.font("Eras Demi ITC", 21));
submitLayout.setMargin(gradeLabel, new Insets(5, 5, 5, 5));
gradeLabel.setPadding(new Insets(10, 10, 15, 10));
TextField gradeReceived = new TextField();
gradeReceived.setPromptText("Enter the grade");
submitLayout.setMargin(gradeReceived, new Insets(5, 5, 5, 5));
Label creditsLabel = new Label("Credits:");
creditsLabel.setFont(Font.font("Eras Demi ITC", 21));
submitLayout.setMargin(gradeLabel, new Insets(5, 5, 5, 5));
creditsLabel.setPadding(new Insets(10, 10, 15, 10));
TextField courseCredit = new TextField();
courseCredit.setPromptText("Course credit");
submitLayout.setMargin(courseCredit, new Insets(5, 5, 5, 5));
submitLayout.addRow(rowCount+1, courseName, gradeLabel, gradeReceived, creditsLabel, courseCredit);
}
private int returnMaxRow(){
int rowNum, lastRow = 0;
for(Node element : submitLayout.getChildren()){
rowNum = submitLayout.getRowIndex(element);
lastRow = (rowNum > lastRow ? rowNum : lastRow);
}
return lastRow;
}
到目前为止,ScrollBar
已添加,但是,当我按下按钮时,行只是聚集在一起,并且 ScrollBar
不会扩展,其高度保持不变。
最佳答案
我遇到了同样的问题..到处寻找...终于有一种方法了..
只是不要使用场景生成器添加网格 Pane ...只需使用场景生成器创建滚动 Pane ,然后使用代码动态添加网格 Pane ,如下所示
// create new constraints for columns and set their percentage
ColumnConstraints columnConstraints = new ColumnConstraints();
columnConstraints.setHgrow(Priority.NEVER);
columnConstraints.setPercentWidth(100.00);
// create new constraints for row and set their percentage
RowConstraints rowConstraints = new RowConstraints();
rowConstraints.setVgrow(Priority.NEVER);
columnConstraints.setPercentWidth(100.0);
// don't set preferred size or anything on gridpane
GridPane gridPane = new GridPane();
gridPane.getRowConstraints().add(rowConstraints);
gridPane.getColumnConstraints().add(columnConstraints);
// suppose your scroll pane id is scrollPane
scrollPane.setContent(gridPane);
最后,在场景构建器中,请记住为滚动 Pane 勾选 FitHeight 和 FitWidth,以便在移动中添加网格时,网格 Pane 将拉伸(stretch)以适合滚动 Pane 大小
关于java - ScrollPane 中的 GridPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45543669/
我有带左侧和中心部分的 BorderPane,两者都是 ScrollPanes。如何使用一个滚动条(垂直)滚动它们。或者如何访问其中一个滚动条? 最佳答案 @invariant 的回答对我不起作用。但
在许多 android 应用程序中,我遇到了“列表的粘性标题”标题,我们喜欢它。 https://github.com/search?q=header+sticky+android ,现在,我正在尝试
我正在尝试从一个可平移的 ScrollPane(“子”)中“拦截”拖动事件,并将该事件重定向到另一个 ScrollPane(“父”)。 这是我这样做的尝试: import javafx.applica
我想知道 JavaFX 8 中是否有一个 ScrollPane 属性可以用来监听当前在给定时间显示的组件。 例如, ScrollPane 有一个 VBox,它有 8 个按钮。在滚动 Pane 中只能看
我有一个 scrollPane 可以通过按下按钮来滚动,使用下面的代码 @FXML public void scrollUp(ActionEvent event) { if (scrollPa
我想要实现像下图这样的结果,其中滚动条始终靠近“执行”按钮。 但是当我调整它的大小时,滚动 Pane 不遵守其约束例如 这是我的 FXML 代码:
我想知道是否有任何“简单”的方法可以将垂直滚动条设置为在按下按钮时或实际上在发生任何事件时“滚动”特定量。 例如,我有一个具有侧边栏的应用程序,侧边栏上的选项之一是“设置”。设置有子项目,我想添加单击
使用 groovy 的 SwingBuilder 设置滚动 Pane 的正确方法是什么?我正在使用 griffon,但我很难动态添加和删除组件... 这是我在 SwingPad 中尝试过的一个片段。它
我使用以下代码将 ScrollPane 中的 Applet 包含到我的 Eclipse 插件 View 中: @Override public void createPartControl(C
我在渲染 JavaFX 滚动 Pane 时遇到了问题。有时,当我滚动 Pane 时,所包含的 View 看起来“撕裂”或只是缺少某些细节。如果用户更改应用程序中的当前焦点(即通过单击新元素),则可以修
我正在为我的游戏创建一个商店,但我遇到了 libgdx ScrollPane 问题。它似乎将其中的表格向下移动了 155 像素。它所产生的效果是,表格显示在距顶部大约 155 像素的位置,并且无论我向
首先,可能有些人已经问过这个问题。不过,我确信我无法用谷歌搜索它。不管怎样,我有一个scrollPane,它有一个textArea 的viewPortView。我的问题是,当我在文本区域中插入大量组件
我想将 StackPane 作为我的根 Pane 。我想要一个scrollPane 作为场景中间的一个小盒子,并在容器下方有两个按钮。 我试图通过编写以下代码来实现它: private StackP
我有这个类(class)作为我的问题的一个例子。滚动 Pane 不滚动,我看不出一个很好的理由: import java.awt.Dimension; import javax.swing.J
我尝试使用: scrollPane.setStyle(".scroll-pane > .viewport { -fx-background-color: red; }"); 但它不起作用。我很确定我做
在我的代码中,我调用了一些项目(我的按钮名称指向不同的项目。名称和所有内容都来自数据库)我想要一个 J ScrollPane 围绕我的按钮,我该怎么办?我只想在滚动 Pane 内调用按钮。这是我的代码
我发现如果我在触摸设备上的 JavaFX 应用程序的 ScrollPane 内滑动,滚动动画会非常慢。我没有在 ScrollPane 的 ScrollBar 上滑动,而是在内容本身内滑动。 如何加快滑
我制作了一个包含 TextArea 的 ScrollPane。当TextArea通过push()方法获取额外文本时,需要将滚动条设置到底部。但是,当使用 push() 时,条形图会设置为顶部。我不知道
我有一个 VBox,我已向其中添加了 50 个标签。考虑到它包含在 ScrollPane 中,我认为它允许我向下滚动以查看其余数据,但它不允许这样做。 当我通过场景生成器构建它时,它被配置为 XML。
我可以在 JavaFX 中简单地创建一个只水平滚动的滚动 Pane ,如下所示: ScrollPane scroll = new ScrollPane(lcp); scroll.setPannable
我是一名优秀的程序员,十分优秀!