javafx黑屏bug borderpane.setCenter

javafx黑屏bug borderpane.setCenter,java,javafx,fxml,Java,Javafx,Fxml,我想确认其他人是否也有同样的javafx问题,或者是否有人知道解决方案 问题: 更改borderPane的窗格并最小化应用程序时,显示黑色borderPane 重现问题: 创建一个边框窗格,并在中间设置任何窗格 当应用程序最小化时,更改中心面板 取消最小化应用程序 边框窗格显示为黑色 下面的代码是这个问题的一个工作示例 Java代码: package application; import javafx.application.Application; import javafx.beans.

我想确认其他人是否也有同样的javafx问题,或者是否有人知道解决方案

问题:

更改borderPane的窗格并最小化应用程序时,显示黑色borderPane

重现问题:

  • 创建一个边框窗格,并在中间设置任何窗格
  • 当应用程序最小化时,更改中心面板
  • 取消最小化应用程序
  • 边框窗格显示为黑色
  • 下面的代码是这个问题的一个工作示例

    Java代码:

    package application;
    
    import javafx.application.Application;
    import javafx.beans.value.ChangeListener;
    import javafx.beans.value.ObservableValue;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Scene;
    import javafx.scene.layout.AnchorPane;
    import javafx.scene.layout.BorderPane;
    import javafx.stage.Stage;
    
    public class Main extends Application {
        @Override
        public void start(Stage primaryStage) {
            try {
                FXMLLoader loader = new FXMLLoader();
                loader.setLocation(Main.class.getResource("MainPain.fxml"));
                BorderPane page = loader.load();
                Scene scene = new Scene(page,400,400);
    
                primaryStage.setScene(scene);
                primaryStage.show();
    
                FXMLLoader loader2 = new FXMLLoader();
                loader2.setLocation(Main.class.getResource("Pane1.fxml"));
                AnchorPane page2 = loader2.load();
    
                FXMLLoader loader3 = new FXMLLoader();
                loader3.setLocation(Main.class.getResource("Pane2.fxml"));
                AnchorPane page3 = loader3.load();
    
                page.setCenter(page2);
    
                primaryStage.iconifiedProperty().addListener(new ChangeListener<Boolean>() {
    
                    @Override
                    public void changed(ObservableValue<? extends Boolean> ov, Boolean t, Boolean t1) {
                       page.setCenter(page3);
                    }
                });
    
            } catch(Exception e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    }
    
    包应用;
    导入javafx.application.application;
    导入javafx.beans.value.ChangeListener;
    导入javafx.beans.value.observeValue;
    导入javafx.fxml.fxmloader;
    导入javafx.scene.scene;
    导入javafx.scene.layout.ancorpane;
    导入javafx.scene.layout.BorderPane;
    导入javafx.stage.stage;
    公共类主扩展应用程序{
    @凌驾
    公共无效开始(阶段primaryStage){
    试一试{
    FXMLLoader=新的FXMLLoader();
    setLocation(Main.class.getResource(“MainPain.fxml”);
    BorderPane页面=loader.load();
    场景=新场景(第400400页);
    初级阶段。场景(场景);
    primaryStage.show();
    FXMLLoader loader2=新的FXMLLoader();
    loader2.setLocation(Main.class.getResource(“Pane1.fxml”);
    AnchorPane page2=loader2.load();
    FXMLLoader loader3=新的FXMLLoader();
    loader3.setLocation(Main.class.getResource(“Pane2.fxml”);
    AnchorPane page3=loader3.load();
    第页设置中心(第2页);
    primaryStage.iconifiedProperty().addListener(新的ChangeListener()){
    @凌驾
    公共无效已更改(可观察值)
    
    小组1

    <?xml version="1.0" encoding="UTF-8"?>
    
    <?import javafx.scene.layout.AnchorPane?>
    <?import javafx.scene.text.Text?>
    
    
    <AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1">
       <children>
          <Text layoutX="216.0" layoutY="172.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Pane1" />
       </children>
    </AnchorPane>
    
    
    
    小组2

    <?xml version="1.0" encoding="UTF-8"?>
    
    <?import javafx.scene.layout.AnchorPane?>
    <?import javafx.scene.text.Text?>
    
    
    
    <AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1">
       <children>
          <Text layoutX="240.0" layoutY="205.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Pane2" />
       </children>
    </AnchorPane>
    
    
    
    如果检测到悬停事件,则会重新绘制窗口,在本例中,通过菜单传入。这不会改变应用程序取消最小化时窗格为黑色的事实

    2014年出现了一个bug,使窗格在最小化和从windows栏取消最小化时变黑。但事实并非如此,只有在应用程序最小化时更改窗格时才会发生这种情况

    环境: 视窗7 64 Java版本:1.8.0_121 Java(TM)Se运行时环境(build 1.8.0_121-b13) Java HotSpot(TM)64位服务器虚拟机(构建25.121-b13,混合模式) JavaFX场景生成器8.3.0

    <?xml version="1.0" encoding="UTF-8"?>
    
    <?import javafx.scene.layout.AnchorPane?>
    <?import javafx.scene.text.Text?>
    
    
    
    <AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1">
       <children>
          <Text layoutX="240.0" layoutY="205.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Pane2" />
       </children>
    </AnchorPane>