JavaFx严重显示场景

时间:2015-10-23 22:40:38

标签: javafx

在我第一次接触JavaFX时,错误地显示了场景,我找不到原因。例如,在第一个基本tutorial from E(fx)clipse's page中提出了以下代码:

package Aplicacion;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.effect.DropShadow;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Prueba extends Application {

    @Override
    public void start(Stage primaryStage) {
        BorderPane p = new BorderPane();
        Text t = new Text("Hello FX");
        t.setFont(Font.font("Arial", 60));
        t.setEffect(new DropShadow(2,3,3, Color.RED));
        p.setCenter(t);
        primaryStage.setScene(new Scene(p));
        primaryStage.show();
    }

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

它应显示文字“ Hello FX ”,但显示以下内容:

enter image description here

对于Windows 64(Win 7),我的Java版本是8u65。

1 个答案:

答案 0 :(得分:1)

这是一个环境问题

可能JavaFX与您的视频卡和驱动程序不兼容。

解决方法

要解决计算机上的呈现错误,explicitly disable the hardware rendering pipeline for JavaFX and only use the software rendering pipeline

-Dprism.order=sw使用java -D property

您遇到的行为似乎有些错误

这种行为看起来像一个错误。我认为,对于不受支持的图形卡,JavaFX应该以不受支持的错误退出,或者回退到软件渲染管道而不是显示乱码垃圾。您可以在http://bugreport.java.com提交错误报告。

如果您提交错误报告,请确保包含有关用于测试的计算机的所有信息:

  • 机器制造和模型。
  • 使用的视频卡或集成图形处理器。
  • 确切地安装了哪个版本的视频驱动程序。
  • 使用的操作系统和Java版本。

您可能还想尝试更新视频卡驱动程序,看看是否能解决问题。

使用Platform.isSupported支持条件功能的使用

效果是条件功能,请确保在尝试使用效果之前检查系统是否已启用EFFECT conditional feature。使用Platform.isSupported

if (Platform.isSupported(ConditionalFeature.EFFECT)) {
    // use effects
}

如果这可以解决您的问题,那么基础JavaFX系统的问题仍然是文档说明:

  

在不支持它的平台上使用条件功能不会导致异常。通常,条件特征将被忽略。有关更多详细信息,请参阅每个功能的文档。

在您的情况下不会发生。