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

JavaFx元素,根据窗口的大小动态更改大小

汪典
2023-03-14

我不能做的是找到一种方法来改变Vbox的尺寸(绿色段),然后根据窗口的大小改变按钮(橙色段)。(当用户使用窗口大小时)

我更喜欢找到一种方法将参数设置到我的css文件中,或者作为最后的手段在我的FXML中。

.css文件:

.left-borderPane{ /*this is style class for Vbox */
/*something so similar: */
-fx-min-width:30% ;
-fx-max-width:30% ;
}

.icon-settings{/*this is style class for buttons*/
-fx-shape:"M72.5,65.9 M90,50c0,8.6-2.5,16.9-7.3,24.1c-0.4,0.6-1,0.9-1.7,0.9c-0.4,0-0.8-0.1-1.1-0.3c-0.9-0.6-1.2-1.8-0.6-2.50zM69.6,50c0,3.2-0.6,6.2-1.8,9.1c-0.3,0.8-1.1,1.2-1.8,1.2c-0.2,0-0.5,0-0.8-0.1c-1-0.4c0.6-0.6,1.4-0.7,2.2-0.4C57.5,14.5,58,15.2,58,16z M35,37H14v26h21V37z M54,20.8l-15,15v28.3l15,15V20.8z";
/*something so similar: */
-fx-min-width:80% ;
-fx-max-width:80% ;
    }

共有1个答案

丁曦
2023-03-14

与web(即HTML+CSS)不同,JavaFX+CSS不从CSS进行定位和大小调整。您必须将左面板的大小与窗口的大小绑定(很可能通过简单的计算),并将按钮的大小与面板的大小绑定(同样通过简单的计算)。下面的代码演示了该原理:

import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class BoundSizes extends Application {
    @Override
    public void start(Stage primaryStage) {
        BorderPane borderPane = new BorderPane();
        VBox vbox = new VBox();
        Button b = new Button("THE BUTTON");
        vbox.getChildren().add(b);
        borderPane.setLeft(vbox);

        // the VBox stays e.g. 1/3 of the window width
        vbox.prefWidthProperty().bind(Bindings.divide(primaryStage.widthProperty(), 3.0));
        // painting it to be obvious
        vbox.setStyle("-fx-background-color: black");

        // the button stays e.g. at half the width of the VBox
        b.prefWidthProperty().bind(Bindings.divide(vbox.widthProperty(), 2.0));

        Scene scene = new Scene(borderPane, 300, 275);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String arg[]) {
        launch(arg);
    }
}
 类似资料:
  • 问题内容: 我有一个奇怪的问题。我正在为窗口使用null布局(= JFrame,并且在窗口上),如果我使用setResizable(false),则窗口大小会变大(左右分别是10像素左右)。我不知道为什么。 两个println返回相同的大小,这很奇怪,也… 有人有主意吗?为什么要调整窗口大小? 更新:这里是一样的东西(如果有重叠的窗口,则在有和没有setResizable的情况下进行编译,然后您将

  • 本文向大家介绍JS根据浏览器窗口大小实时动态改变网页文字大小的方法,包括了JS根据浏览器窗口大小实时动态改变网页文字大小的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS根据浏览器窗口大小实时动态改变网页文字大小的方法。分享给大家供大家参考,具体如下: 目前,有了css3的rem,给我们的移动端开发带来了前所未有的改变,使得我们的开发更容易,更易兼容很多设备,但这个不在本文讨论的重

  • 我正在尝试构建一个包含6个窗格(作为父级添加到GridPane布局中)的简单Java项目。我必须在开始时设置窗口大小,并通过参考根布局的宽度和高度,设法将它们均匀地拆分。 但我想要他们调整大小,因为我改变了窗口的大小(使用鼠标,现在他们得到固定的大小)。 下面是我的代码:

  • 我有一个java应用程序-一个计算器。我想通过调整应用程序窗口的大小来动态调整按钮的字体大小。如何实现? 我的想法是使用ComponentEvents。我有应用程序窗口的初始大小和初始字体的大小。我想根据按钮的大小改变字体大小,受窗口大小变化的影响。问题是如何在覆盖方法中使用比例[初始窗口大小]/[初始字体大小]?每个字体的比例都不同。

  • 如何根据组件内容大小修改浮动窗口

  • 我用C语言制作了一个简单的OpenGL程序,在盒子内绘制一个旋转的三角形。三角形应该是等边的,但即使窗口宽度和高度相同,当它们沿着窗口的宽度和长度移动时,三角形的顶点也会收缩和拉伸。我能分辨出来,因为我做了一个静态的等角盒,三角形的顶点在它外面。以下是它正在做的事情的简短片段:https://edwardseverinsen1717-gmail.tinytake.com/sf/NDg5NjQ0Xz