我刚刚开始尝试在JavaFX的世界中尝试在画布上显示图像时遇到问题。我在谷歌搜索了几个小时,然后空白了。
这是我的代码(我在网上搜索):
public class Main extends Application
{
@Override
public void start(Stage theStage)
{
theStage.setTitle( "Canvas Example" );
Group root = new Group();
Canvas canvas = new Canvas( 400, 400 );
GraphicsContext gc = canvas.getGraphicsContext2D();
gc.setFill( Color.RED );
gc.setStroke( Color.BLACK );
gc.setLineWidth(2);
Font theFont = Font.font( "Times New Roman", FontWeight.BOLD, 48 );
gc.setFont( theFont );
gc.fillText( "Hello, World!", 60, 50 );
gc.strokeText( "Hello, World!", 60, 50 );
Image earth = null;
try{
earth = new Image("file:/res/earth.png");
}catch(Exception e){
System.out.println(e.toString());
}
System.out.println("height: "+earth.getHeight()+" width: "+earth.getWidth());
gc.drawImage( earth, 180, 100 );
root.getChildren().add( canvas );
Scene theScene = new Scene( root );
theStage.setScene( theScene );
theStage.setResizable(false);
theStage.show();
}
public static void main(String[] args)
{
launch(args);
}
}
它编译并运行正常,我没有捕到任何异常,Hello World文本显示正确,但没有图像。我已经尝试过绘制形状(如圆形和矩形),它们也可以正常工作,只有当我尝试显示图像时才会出现问题。 System.out.println中的getWidth()和getHeight()调用都返回0.0
我正在使用IntelliJ Idea 2016.3.3 IDE,Java JDK 1.8.0_112,现在我完全陷入了困境。非常感谢任何帮助。