2012-10-03 54 views
2

我正在用Java swing编写游戏,并且需要实现一些类的层。Java Swing为游戏添加组件

这里是类:

  • 的Main()//设置窗口,使得游戏和setvisible
    • 游戏()//绘制主游戏画布,维护有关的游戏数据,告诉每个对象绘制自身
      • 委员会()//绘制房间和背景图形
        • 间()//绘制房间内的东西,跟踪位置
          • 项目()//位置,颜色,功能等
            • CollectibleItems()//延伸物品
            • 生物()//延伸物品
      • ControlPanel控制( )//将一个按钮放在那个位置
      • StatePanel()//将文本放在房间的面板中,以及是否锁定它

主要类:

import java.awt.*; 

import javax.swing.*; 

import javax.swing.border.*; 

public class Main extends JFrame { 
    public static void main (String [] args) { 
     new Main(); 
    } 

    public Main() { 
     // Window setup                    
     setSize (700, 450); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     Container content = getContentPane(); 
     content.setLayout(new BorderLayout()); 


     // Put a Game in                   
     Game myGame=new Game();  
     myGame.setBorder(new LineBorder(Color.black, 9)); 
     content.add(myGame, BorderLayout.CENTER); 

      setVisible (true); 
    } 

这是我的游戏类。从这里我想添加董事会和小组,并且我希望董事会添加房间等。我不知道如何封装类,然后添加它们和setVisible。我知道如何在main中做到这一点,但有没有办法使用类似的content.add()类型的东西来添加东西给游戏?

​​

TL; DR-如何封装和显示不同的类? JavaSwing的新功能...

回答

3

首先...不要做这个! EVER !!你

public void paintComponent (Graphics g) { 

    JPanel ControlPanel=new JPanel(); 
    ControlPanel.setLayout(new FlowLayout()); 
    ControlPanel.setBorder(new LineBorder(Color.red, 9)); 
} 

还必须调用super.paintComponent,除非你有一个非常,非常好的理由不这样做。这些方法做了很多重要的后台工作。

永远不要在任何paintXxx方法的范围内修改任何组件。这将使你陷入无限循环,并最终消耗你所有的CPU。

我会通过具有读通过

启动