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

JavaFx:我如何可以绑定一个舞台与屏幕分辨率?

澹台俊晖
2023-03-14

我正在从事javaFx项目,我在笔记本电脑上创建的,一切都很好,但是当我更改屏幕时,现在我使用大屏幕,我发现我的应用程序受屏幕分辨率的影响,一些组件不适合屏幕。这是我的代码:

 try {

                        FXMLLoader fxm = new FXMLLoader(getClass().getResource("Home.fxml"));

                        //Load th file XML To parent
                        Parent parent = (Parent) fxm.load();
                        //Create a new stage         

                        s.setTitle("PubWorks 1.0");
                        s.getIcons().add(new Image("/Images/Casque.png"));

                        Scene scene = new Scene(parent);
                        s.setScene(scene);
                        s.centerOnScreen();
                        ((Node) event.getSource()).getScene().getWindow().hide();
                        s.show();
                        s.setOnCloseRequest(new EventHandler<WindowEvent>() {
                            @Override
                            public void handle(WindowEvent event) {
                                new RecentMessageDao().Delete(new RecentMessage(0));
                                User user = new User(UserTxt.getText(), PasswordTxt.getText());
                                new UserDao().setOff(user);
                                System.exit(0);

                            }
                        });
                        MenuController controller = fxm.getController();
                        controller.getMenuController(s);

                    } catch (Exception exception) {
                        exception.printStackTrace();

                    }

这是我的父布局

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="710.0" prefWidth="1360.0" styleClass="mainFxmlClass" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="hmproject.MenuController"> ........</AnchorPane>

共有1个答案

韦睿
2023-03-14

这是你可以遵循的模式

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

<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?>


<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <VBox layoutX="168.0" layoutY="30.0" prefHeight="200.0" prefWidth="100.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
         <children>
            <AnchorPane prefHeight="52.0" prefWidth="600.0" style="-fx-background-color: pink;" />
            <HBox prefHeight="100.0" prefWidth="200.0" VBox.vgrow="ALWAYS">
               <children>
                  <AnchorPane prefHeight="309.0" prefWidth="113.0" style="-fx-background-color: lightgreen;" />
                  <AnchorPane prefHeight="200.0" prefWidth="200.0" style="-fx-background-color: lightblue;" HBox.hgrow="ALWAYS" />
               </children>
            </HBox>
            <AnchorPane prefHeight="39.0" prefWidth="600.0" style="-fx-background-color: yellow;" />
         </children>
      </VBox>
   </children>
</AnchorPane>
 类似资料:
  • 问题内容: 我想在屏幕上居中放置一个舞台。 这是我尝试过的: 调用centerOnScreen()后,舞台过高。它似乎无法正常工作。我需要自己计算x和y pos吗?或者如何正确使用此功能? 问题答案: 的默认实现如下: 哪里 总是将舞台设置为比中心高一点。 要将舞台定位在精确的中心,可以使用您设置的 自定义X和Y值 。

  • 功能介绍 获取百度移动统计平台的全部屏幕分辨率列表 接口 https://openapi.baidu.com/rest/2.0/mtj/svc/config/getScreenList?access_token={ACCESS_TOKEN} 请求参数 参数名 类型 描述 样例 access_token string 用户登入后获取的token 1.a6b7dbd428f731035f771b8d

  • 问题内容: 我目前正在使用两个控制器类。 在Controller1中,它创建一个新的阶段,该阶段在主要阶段的顶部打开。 现在,一旦该阶段打开,我希望它在关闭之前保持打开状态约5秒钟。 在Controller2中,我尝试实现类似 但是我不知道在while循环中放入什么来关闭它。我已经尝试了各种方法,但没有任何效果。 问题答案: 使用:

  • 问题内容: 如何获得以像素为单位的屏幕分辨率(宽x高)? 我正在使用JFrame和Java swing方法。 问题答案: 你可以使用该方法获取屏幕尺寸。 在多显示器配置中,你应该使用以下命令: 如果要在DPI中获得屏幕分辨率,则必须使用上的getScreenResolution()方法Toolkit。

  • 问题内容: 有没有一种方法可以适用于所有浏览器? 问题答案: 原始答案 是。 更新 要获得移动设备的原始分辨率,您必须乘以设备像素比率:和。比率也为1的台式机也可以使用。 从本(Ben)得到另一个答案: 在原始JavaScript中,这将为您提供可用的宽度/高度: 对于绝对宽度/高度,请使用:

  • Android设备具有mdpi、hdpi、xhdpi、xxhdpi等屏幕分辨率。在Android系统中编程时,我会用这些分辨率为手机编写不同的代码。但Flutter是android和ios的开发环境。我需要为不同分辨率的android和ios手机分别编程吗?ios中是否有mdpi、hdpi、xhdpi等分辨率?