我正在尝试构建一个包含6个窗格(作为父级添加到GridPane布局中)的简单Java项目。我必须在开始时设置窗口大小,并通过参考根布局的宽度和高度,设法将它们均匀地拆分。
pane.setMinSize(root.getWidth()/3, root.getHeight()/2);
但我想要他们调整大小,因为我改变了窗口的大小(使用鼠标,现在他们得到固定的大小)。
下面是我的代码:
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class Main6 extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
GridPane root = new GridPane();
Scene scene = new Scene(root, 900, 600);
Pane pane1 = new Pane();
pane1.setBackground(new Background(new BackgroundFill(Color.GREEN, CornerRadii.EMPTY, Insets.EMPTY)));
pane1.setMinSize(root.getWidth()/3, root.getHeight()/2);
Pane pane2 = new Pane();
pane2.setBackground(new Background(new BackgroundFill(Color.WHITE, CornerRadii.EMPTY, Insets.EMPTY)));
pane2.setMinSize(root.getWidth()/3, root.getHeight()/2);
Pane pane3 = new Pane();
pane3.setBackground(new Background(new BackgroundFill(Color.GREY, CornerRadii.EMPTY, Insets.EMPTY)));
pane3.setMinSize(root.getWidth()/3, root.getHeight()/2);
Pane pane4 = new Pane();
pane4.setBackground(new Background(new BackgroundFill(Color.BLUE, CornerRadii.EMPTY, Insets.EMPTY)));
pane4.setMinSize(root.getWidth()/3, root.getHeight()/2);
Pane pane5 = new Pane();
pane5.setBackground(new Background(new BackgroundFill(Color.RED, CornerRadii.EMPTY, Insets.EMPTY)));
pane5.setMinSize(root.getWidth()/3, root.getHeight()/2);
Pane pane6 = new Pane();
pane6.setBackground(new Background(new BackgroundFill(Color.YELLOW, CornerRadii.EMPTY, Insets.EMPTY)));
pane6.setMinSize(root.getWidth()/3, root.getHeight()/2);
root.getChildren().addAll(pane1, pane2, pane3, pane4, pane5, pane6);
GridPane.setRowIndex(pane1, 0);
GridPane.setColumnIndex(pane1, 0);
GridPane.setRowIndex(pane2, 0);
GridPane.setColumnIndex(pane2, 1);
GridPane.setRowIndex(pane3, 0);
GridPane.setColumnIndex(pane3, 2);
GridPane.setRowIndex(pane4, 1);
GridPane.setColumnIndex(pane4, 0);
GridPane.setRowIndex(pane5, 1);
GridPane.setColumnIndex(pane5, 1);
GridPane.setRowIndex(pane6, 1);
GridPane.setColumnIndex(pane6, 2);
primaryStage.setTitle("Learning JavaFX");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
使用ColumnConstraints
和RowConstraints
实现所需的调整大小行为:
import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.geometry.VPos;
import javafx.scene.Scene;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.CornerRadii;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.RowConstraints;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class Main6 extends Application {
private static final int ROWS = 2, COLS = 3;
private static final Color[][] colors = new Color[][] {
{Color.GREEN, Color.WHITE, Color.GRAY},
{Color.BLUE, Color.RED, Color.YELLOW}
};
@Override
public void start(Stage primaryStage) throws Exception {
GridPane root = new GridPane();
root.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
//add panels
for(int row = 0; row < ROWS; row++){
for(int col = 0; col < COLS; col++){
root.getChildren().add( getPane(row, col));
}
}
//Construct column constraints to resize horizontaly
ObservableList<ColumnConstraints> colCconstraints = root.getColumnConstraints();
colCconstraints.clear();
for(int col = 0; col < COLS; col++){
ColumnConstraints c = new ColumnConstraints();
c.setHalignment(HPos.CENTER);
c.setHgrow(Priority.ALWAYS);
colCconstraints.add(c);
}
//Construct row constraints to resize vertically
ObservableList<RowConstraints> rowCconstraints = root.getRowConstraints();
rowCconstraints.clear();
for(int row = 0; row < ROWS; row++){
RowConstraints c = new RowConstraints();
c.setValignment(VPos.CENTER);
c.setVgrow(Priority.ALWAYS);
rowCconstraints.add(c);
}
Scene scene = new Scene(root);
primaryStage.setTitle("Learning JavaFX");
primaryStage.setScene(scene);
primaryStage.sizeToScene();
primaryStage.show();
}
/**
*
*/
private Pane getPane(int row, int col) {
Pane pane = new Pane();
pane.setBackground(new Background(new BackgroundFill(colors[row][col], CornerRadii.EMPTY, Insets.EMPTY)));
pane.setPrefSize(300, 300);
GridPane.setRowIndex(pane, row);
GridPane.setColumnIndex(pane, col);
return pane;
}
public static void main(String[] args) {
launch(args);
}
}
窗口大小,我们可以非常方便的使用width、height调整,但是如何知道 width和height是一个问题? 在 Window 操作系统中,假如我们想要缩放,我们通常会把鼠标移动到窗口的右边栏,和底部边栏,以及右下边栏。 而且在不同的边栏,鼠标呈现的样式也是不一样的。当我们在右边栏的时候我们可以通过cursor: e-resize;模拟鼠标样式。 在底部边栏我们可以通过cursor: s-re
#include <stdio.h> void fun1(void) { int i = 0; i++; i = i * 2; printf("%d\n", i); } void fun2(void) { int j = 0; fun1(); j++; j = j
我的场景中有一个对象。我希望能够调整窗口的大小,并与它一起调整窗格的大小。我还想在窗格旁边放置一个。 到目前为止,我已经成功地生成了一个完全可调整大小的或一个,其中包含和对象,但当我调整窗口大小时,窗格不会随之调整大小。 以下是带有锚烷的FXML: 只有的版本基本上就是版本中使用的代码,但具有和属性。 如何制作一个场景,使其具有可调整大小的和?
我有下面的代码,它设置了一个特定大小的窗口。它还从外部URL加载图像。
问题内容: 我有以下JQuery代码: 唯一的问题是,这仅在首次加载浏览器时有效,我是否还希望在调整窗口大小时进行检查? 有任何想法吗? 问题答案: 这是一个使用jQuery,javascript和css处理调整大小事件的示例。 (如果您只是通过调整大小来设置样式(媒体查询),最好的方法是CSS) [ CSS javascript jQuery 如何停止调整大小的代码执行如此频繁! 这是绑定到调整
问题内容: 我正在用d3.js绘制散点图。借助以下问题: 获取屏幕,当前网页和浏览器窗口的大小 我正在使用此答案: 这样我就可以将图适合用户的窗口,如下所示: 现在,我希望在用户调整窗口大小时可以调整图的大小。 PS:我的代码中没有使用jQuery。 问题答案: 寻找“响应式SVG”,使SVG响应式非常简单,您不必再担心大小。 这是我的做法: 注意: SVG图像中的所有内容都会随窗口宽度缩放。这包