在我第一次接触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 ”,但显示以下内容:
对于Windows 64(Win 7),我的Java版本是8u65。
答案 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提交错误报告。
如果您提交错误报告,请确保包含有关用于测试的计算机的所有信息:
您可能还想尝试更新视频卡驱动程序,看看是否能解决问题。
使用Platform.isSupported支持条件功能的使用
效果是条件功能,请确保在尝试使用效果之前检查系统是否已启用EFFECT
conditional feature。使用Platform.isSupported:
if (Platform.isSupported(ConditionalFeature.EFFECT)) {
// use effects
}
如果这可以解决您的问题,那么基础JavaFX系统的问题仍然是文档说明:
在不支持它的平台上使用条件功能不会导致异常。通常,条件特征将被忽略。有关更多详细信息,请参阅每个功能的文档。
在您的情况下不会发生。