2013-03-28 101 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