2012-10-03 55 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。

我會通過具有讀通過

啓動