2013-08-04 53 views
-1

我正在尋找它,所以我有一個單獨的窗口,可以顯示任何東西,但爲了我的目的,我希望它能顯示諸如對象的位置,它們的狀態(它們是否與某物相沖突等)等等問題是,我不知道如何去解決這個問題。如何繪製顯示我想要的單獨窗口?

我會使用System.out.println("Stuff: " + thing);,但信息會上移得太快。

我做了和真棒圖像有點說明我後。

enter image description here

(編輯) 所以,我正在尋找的是如何讓兩個獨立的窗口一樣的圖片。他們是分開的,但仍然是一個程序。它後面的空白是桌面(我應該更清楚一點)第二個調試窗口可以做任何主窗口(我的意思是它可以渲染形狀,圖像等)。我所問的只是,我如何實現這一目標?

這是什麼我會添加/更改和在哪裏,使其工作?

public class Game extends JFrame implements Runnable, KeyListener 
{ 
    JFrame frame; 
    Graphics2D g2d; 

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

    public Game() 
    {  
     frame = new JFrame(); 

     setTitle("Battle for the Roids"); 
     setSize(SCREENWIDTH, SCREENHEIGHT); 
     setLocationRelativeTo(null); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setVisible(true); 

     // Set up assets and initialize loop 
    } 

    // Lots of lines later 

    public void paint(Graphics g) 
    { 
     // Set up double/triple buffering 
     BufferStrategy bs = getBufferStrategy(); 
     if(bs == null) 
     { 
      createBufferStrategy(3); 
      return; 
     } 

     g2d = (Graphics2D) g; 

     g2d = (Graphics2D) bs.getDrawGraphics(); 

     // Add things to be rendered 

     g2d.dispose(); 
     bs.show(); 
    } 
} 

我有很多額外的代碼在那裏,但沒有什麼是必需的。大多是移動,旋轉,按鍵處理等代碼。

+0

也許你應該看看日誌框架,例如,log4j的。我認爲這會更容易,因爲你似乎只使用它來記錄調試信息。 –

+0

我想你可能需要添加一些關於你試圖做什麼的更多細節。考慮擴大你的問題。 – Zyerah

回答

2

Idk如果這可以幫助你,但你可能做的是創建一個新的JFrame,並使用另一個類來顯示它。創建一個JLabel對象,並讓它設置所有需要使用的對象的所有信息。

例如,如果你想擁有它顯示的用戶數據你可能會想嘗試:

public class WindowSample extends JFrame { 
    JLabel userData = new JLabel(); 
    add(userData); 
    userData.setText(//information for user data); 
} 

希望這有助於!

1

您可以使用Log4J並編寫您自己的appender,其唯一的責任是輸出到JTextAreaJList之類的東西,這樣可以解耦您的應用程序的兩部分。然後,您需要做的就是使用Logger來編寫關於應用程序狀態的信息。

如果這不符合您的需求,您可以編寫一些鏈接到您的遊戲模型的偵聽器/觀察者/回調API。

然後,您可以直接響應對模型的更改。這有可能拖慢你的遊戲引擎的速度,因爲隨着應用程序的任何部分改變,它都需要觸發更新。

你可以通過使用一個單獨的線程來調度這些事件,但這仍然增加開銷。

就個人而言,我喜歡第二個選項,但首先是更容易實現;)

+0

+1,我喜歡你提出的兩種方法。雖然他們都要求認真執行:-) –

相關問題