如何调用包含Graphics g的函数

时间:2017-10-07 02:08:13

标签: java swing

我想知道如果某个程序在我的程序中发生,我怎么能调用包含Graphics G的函数。

public void dead (Graphics g) {
    right = false;
    left = false;
    up = false;
    down = false;
    dead = true;
    score = 0;
    moves = 0;
    g.setColor(Color.WHITE);
    g.setFont(new Font("arial", Font.BOLD, 50));
    g.drawString("Game Over", 300, 300);

    g.setFont(new Font("arial", Font.BOLD, 20));
    g.drawString("Press \"Space\" To Restart", 312, 340);
}

如何从其他地方拨打电话?我试过做死();但它说这个方法不适用于这个论点。提前谢谢!

编辑:这是我的JFrame:

    JFrame obj = new JFrame("Snake");
    gameplay gameplay = new gameplay(); 
    obj.setBounds(10, 10, 905, 700);
    obj.setBackground(Color.DARK_GRAY);
    obj.setResizable(false);
    obj.setVisible(true);
    obj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    obj.add(gameplay);

1 个答案:

答案 0 :(得分:2)

我们应该在paintComponent(Graphics g)中调用这个死(g)方法来在蛇死时更新屏幕:

在显示您的绘画的面板中,您将得到以下内容:

@Override
public void paintComponent(Graphics g){
    super.paintComponent(g):
    if(gameOver)
        dead(g);
}

顺便说一句,您可能不希望将与绘画无关的代码包含在您的死(g)方法中,例如:

right = flase:
left = flase;
...
score = 0;
moves = 0;

尽可能使您的绘画方法与其他非绘画相关的代码保持杂乱。在极端情况下,混乱可能会导致显示滞后。