在我第一次接触JavaFX时,场景被错误地显示出来,我找不到原因。例如,下面的代码是在第一个基本教程从E(Fx)剪贴画的网页中提出的
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 “,但显示如下:

我的Java版本是8u65 for Windows 64 (Win 7)。
发布于 2015-10-23 23:42:07
这是一个环境问题
JavaFX可能与您的显卡和驱动程序不兼容。
解决方案
若要解决计算机上的呈现错误,显式禁用JavaFX的硬件呈现管道,并且只使用软件呈现管道
-Dprism.order=sw使用属性。
你所经历的行为似乎很糟糕,
这种行为看上去像个窃听器。我认为,对于不受支持的显卡,JavaFX应该以不受支持的错误退出,或者返回到软件渲染管道,而不是显示乱七八糟的垃圾。您可能希望在http://bugreport.java.com上提交错误报告。
如果您提交了错误报告,请确保包含用于测试的机器的所有信息:
您可能还想尝试更新您的视频卡驱动程序,并查看这是否解决了问题。
使用实现条件特性的Platform.isSupported门使用
效果是条件特性,请确保在尝试使用效果之前检查是否为系统启用了条件特征。使用Platform.isSupported:
if (Platform.isSupported(ConditionalFeature.EFFECT)) {
// use effects
}如果这解决了您的问题,那么它仍然是基础JavaFX系统的一个问题,因为文档声明:
在不支持它的平台上使用条件特性不会导致异常。通常情况下,条件特性将被忽略。有关更多细节,请参见每个特性的文档。
在你的情况下并没有发生。
https://stackoverflow.com/questions/33312428
复制相似问题