2013-03-28 100 views
1

我是Java遊戲編程新手。我遵循了幾個教程並觀看了一些視頻。我顯然做錯了什麼,因爲我加載應用程序每10次顯示一次。JFrame隨機渲染圖形

遊戲概念是一個足球劇本。我的目標是教授我8歲的孩子在不同場景存在的情況下應該扮演什麼角色。

我使用Eclipse作爲IDE。以下是班級和相關成員的總結。下面表示的類用於在字段上繪製一個字段和幾行。

注意:很多邏輯已被刪除,以儘量減少這篇文章的大小。如果您需要更多信息,請告訴我。


public class SoccerPlaybook { 

    public static void main(String[] args) { 
    new SoccerPlaybook(); 
    } 

    public SoccerPlaybook() { 
    JFrame frame = new JFrame(); 
    frame.add(new Game(this)); 
    } 
} 

public class Game extends JPanel { 

    public Game(SoccerPlaybook soccerPlaybook) { 
    this.soccerPlaybook = soccerPlaybook; 
    } 

    public void paintComponent(Graphics g) {  
    field.paintComponent(g); 
    } 
} 

public class Field extends JPanel { 

    public Field(Game game) { 
    this.game = game; 
    } 

    public void paintComponent(Graphics g) { 
    g.setColor(Color.GREEN); 
    g.fillRect(0, 0, game.getSoccerPlaybook().getWidth(), game.getSoccerPlaybook().getHeight()); 

    g.setColor(Color.WHITE); 
    g.drawLine(200, 50, 400, 50); 
    g.drawLine(200, 300, 400, 300); 
    g.drawLine(200, 50, 200, 300); 
    g.drawLine(325, 100, 400, 100); 
    g.drawLine(325, 250, 400, 250); 
    g.drawLine(325, 100, 325, 250); 
    } 
} 

我試過使用paint和paintComponent。兩者似乎都有相同的結果。

謝謝你的幫助。

回答

1

我認爲你需要做的:

frame.pack(); 
frame.setVisible(true); 

這將佈局框架,並確保它得到顯示。您應該在添加遊戲JPanel後執行此操作。

您可能還會發現需要爲Game JPanel設置首選大小。如果是這樣,在遊戲構造函數中加入如下內容:

this.setPreferredSize(new Dimensions(600, 400)); 
+0

就是這樣。非常感謝你。 – alockrem 2013-03-28 01:08:13