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