我使用的Mac带有最新版本的Java(FX(、macOS以及IntelliJ IDEA CE。问题是,当我调整JavaFX窗口的大小时,我的Mac会立即崩溃。只有当我按下电源按钮五秒钟时,MacBook才会重新启动。我创建了一个普通的IntelliJ JavaFX项目,使用这些自动创建的文件:
- HelloController.java
- HelloApplication.java
- hello-view.fxml
我没有做任何更改,而是启动了程序。一切都很好,直到你试图调整窗口大小,Mac崩溃,你不能移动courser或其他任何东西。
HelloApplication.java:
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();
}
}
Hello 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>
我对边框窗格(使用场景生成器编辑(也有同样的问题。
我的硬件:
- MacBook Pro 2012年年中
- 双核英特尔酷睿i5 2.5 GHz
- 16GB 1600 MHz
- DDR3 1TB三星EVO 860 SSD
- 英特尔高清显卡4000 1536 MB
- macOS Catalina 10.15.7
Java(FX(版本:
我试过了:
java.vm.name: Java HotSpot(TM) 64-Bit Server VM
java.runtime.version: 17.0.1+12-LTS-39
javafx.runtime.version: 17.0.1+1
和:
java.vm.name: Java HotSpot(TM) 64-Bit Server VM
java.runtime.version: 17.0.1+12-LTS-39
javafx.runtime.version: 18-ea+8
有人有同样的问题吗,或者知道解决这个问题的方法吗?
我刚刚在我的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: %sn", System.getProperty("java.vm.name", "(undefined)"));
System.out.format("java.runtime.version: %sn", System.getProperty("java.runtime.version", "(undefined)"));
System.out.format("javafx.runtime.version: %sn", System.getProperty("javafx.runtime.version", "(undefined)"));
}