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

在Mac上调整窗口大小时JavaFX崩溃

满伟彦
2023-03-14

我使用的是最新版本的Java(FX)、macOS和IntelliJ IDEA CE的Mac电脑。问题是,当我调整JavaFX窗口的大小时,我的Mac会立即崩溃。只有当我按下电源按钮5秒钟后,MacBook才会重新启动。我创建了一个普通IntelliJ JavaFX项目,其中包含以下自动创建的文件

  • Hello控制器。java

我没有改变任何事情,开始了这个项目。一切正常,直到你尝试调整窗口大小,Mac崩溃,你不能移动courser或其他任何东西。

你好,应用程序。爪哇:

package com.example.demo;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.stage.Stage;

import java.io.IOException;

public class HelloApplication extends Application {
    @Override
    public void start(Stage stage) throws IOException {
        FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("hello-view.fxml"));
        Scene scene = new Scene(fxmlLoader.load(), 320, 240);
        stage.setTitle("Hello!");
        stage.setScene(scene);
        stage.show();
}

    public static void main(String[] args) {
        launch();
    }
}

你好Controller.java:

package com.example.demo;

import javafx.fxml.FXML;
import javafx.scene.control.Label;

public class HelloController {
    @FXML
    private Label welcomeText;

    @FXML
    protected void onHelloButtonClick() {
        welcomeText.setText("Welcome to JavaFX Application!");
    }
}

你好,视图。fxml

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

<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.BorderPane?>


<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/17" xmlns:fx="http://javafx.com/fxml/1">
   <bottom>
      <Button mnemonicParsing="false" text="Button" BorderPane.alignment="CENTER" />
   </bottom>
</BorderPane>

我对边框窗格(使用场景生成器编辑)也有同样的问题。

是否有人有相同的问题,或者知道解决方法?

共有1个答案

云德辉
2023-03-14

我刚刚在我的Mac(macOS Catalina 10.15.7)上运行了您的示例程序。我可以把它做得越来越大,越来越小,没有任何问题。我的Java配置是:

java.vm.name: OpenJDK 64-Bit Server VM
java.runtime.version: 18-ea+29-2007
javafx.runtime.version: 18-ea+8

也许您应该将这个init块添加到您的代码中,以确保您在运行时确实使用了您认为正在使用的版本。

@Override
public void init() {
    System.out.format("java.vm.name: %s\n", System.getProperty("java.vm.name", "(undefined)"));       
    System.out.format("java.runtime.version: %s\n", System.getProperty("java.runtime.version", "(undefined)"));
    System.out.format("javafx.runtime.version: %s\n", System.getProperty("javafx.runtime.version", "(undefined)"));        
}
 类似资料:
  • 我正在尝试构建一个包含6个窗格(作为父级添加到GridPane布局中)的简单Java项目。我必须在开始时设置窗口大小,并通过参考根布局的宽度和高度,设法将它们均匀地拆分。 但我想要他们调整大小,因为我改变了窗口的大小(使用鼠标,现在他们得到固定的大小)。 下面是我的代码:

  • 我有下面的代码,它设置了一个特定大小的窗口。它还从外部URL加载图像。

  • 问题内容: 我有以下JQuery代码: 唯一的问题是,这仅在首次加载浏览器时有效,我是否还希望在调整窗口大小时进行检查? 有任何想法吗? 问题答案: 这是一个使用jQuery,javascript和css处理调整大小事件的示例。 (如果您只是通过调整大小来设置样式(媒体查询),则最好的方法是CSS) CSS javascript jQuery 如何停止调整大小的代码执行如此频繁! 这是绑定大小调整

  • 我的场景中有一个对象。我希望能够调整窗口的大小,并与它一起调整窗格的大小。我还想在窗格旁边放置一个。 到目前为止,我已经成功地生成了一个完全可调整大小的或一个,其中包含和对象,但当我调整窗口大小时,窗格不会随之调整大小。 以下是带有锚烷的FXML: 只有的版本基本上就是版本中使用的代码,但具有和属性。 如何制作一个场景,使其具有可调整大小的和?

  • 窗口大小,我们可以非常方便的使用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