Java FX,GraphicsContext在控制器初始化方法中?

时间:2017-03-04 12:15:26

标签: java javafx

我的目标是为我的俄罗斯方块程序绘制一些立方体,但我遇到了一个问题。 我遵循MVP原则,因此我的数据结构和视图通过演示者连接。

我的想法是,视图从模型中获取数据,以便绘制块。 在我的实现中,GraphicsContext和绘制块的命令在初始化方法中初始化。通过加载FXML文件来注入画布,并且还设置了myGroup。

让我们看看我的视图控制器中的一些代码:

public void start() throws IOException
{
    initCanvas(); // initialize FXML -> injecting myCanvas; initialize myGroup

    Stage stage = new Stage(); 
    field = mainPresenter.initializeField();
    landed = mainPresenter.initializeLanded();

    final long startNanoTime = System.nanoTime();
    new AnimationTimer()
    {
        @Override
        public void handle(long now)
        {
            mainPresenter.update(); // exactly 1 frame of the game

    // this can be initialized here but its already to late :(
            landed = mainPresenter.initializeLanded(); 
        }
    }.start();
    canvasScene = new Scene((Parent) myGroup);
    stage.setTitle("Tetris");
    stage.setScene(canvasScene);
    stage.show();
}

从我的主类调用start()方法。

所以这是我的问题:GraphicsContext需要来自landed字段的信息,但GC位于initialize方法中,因此我得到一个空指针。 - >在初始化方法时,a无法访问模型。

@FXML
public void initialize()
{
    // it would be nice if this here could be possible! :)
    landed = mainPresenter.initializeLanded();
    gc = myCanvas.getGraphicsContext2D();

    // basically some drawing options here
    gc.setFill(Color.BLUE);
    gc.fillRect(0, 450, 50, 50);
}

我希望我能为你妥善陈述我的问题。如果不清楚,请询问更多信息! 这是我的第一个“大”应用程序,我非常确定我的问题有一个简单的解决方案,但只是找到它。

0 个答案:

没有答案