2014-02-24 49 views
0

當我運行我的程序時,JFrame會顯示JFrame中的內容,然後顯示JFrame打開時的內容。Java JFrame顯示不正確

frame behaving badly

public class ChuckysAdventure extends JFrame { // Main Class 

    public ChuckysAdventure(){ 
     setTitle("Chuckys Adventure"); 
     setSize(700, 700); 
     setResizable(false); 
     setVisible(true); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 
    public void paint (Graphics g){ 
     g.drawString("Hi. I'm Chucky. Wanna play?", 250, 250); 
    } 
    public static void main(String[] args){ // Starts game 
     new ChuckysAdventure(); 
    } 
+0

到底是什麼問題嗎?你能概述你想要它的樣子嗎?它看起來像你的框架有透明度問題。如果你可以提供代碼,我們也許可以找到問題。 – TastyLemons

+0

code please .... –

+0

看起來你已經將框架的不透明度設置爲「1」以外的其他東西......或者你設置的背景顏色具有alpha分量,或者你已經使用了油漆鏈...我可以繼續猜測,或者你可以提供一個[MCVE](https://stackoverflow.com/help/mcve) – MadProgrammer

回答

-2

我以前是這樣的:

public class gui { 
public static void main(String args[]) { 
    JFrame tobi = new JFrame("youwillneverfigurethisout"); 
    tobi.setVisible(true); 
    tobi.setTitle("Xbatz GUI Example"); 
    tobi.setSize(400, 200); 
    tobi.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

} 
} 

而且它完美的作品。也許嘗試的事物的秩序改變什麼,我有

+0

這是行得通的,除了現在我需要一個新函數來打印文本。你有什麼建議?請將它放在示例文本中,以便我可以看到該位置。謝謝! – WITSorcery

+2

[初始線程](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html).... – MadProgrammer

7

歡迎的奇妙世界「親愛的,我打破了塗料產業鏈」 ......在Swing

畫是由一系列鏈式方法的調用一起工作以產生最終結果,其中一種方法實際上用組件背景顏色填充Graphics上下文

未能兌現此繪畫鏈將不會導致繪製工件結束。 Graphics是一個共享資源,這意味着在指定的繪製週期內繪製的所有內容都將使用上下文的相同實例。如果你不能確保油漆鏈正確完成,你將得到任何數量的真棒油漆工件。

您最初的解決將是改變...

public void paint (Graphics g){ 
    g.drawString("Hi. I'm Chucky. Wanna play?", 250, 250); 
} 

到...

public void paint (Graphics g){ 
    super.paint(g); 
    g.drawString("Hi. I'm Chucky. Wanna play?", 250, 250); 
} 

你未來的解決將是避免覆蓋頂層容器paintJFrame從零件事實上,它不是雙緩衝和繪畫將出現在框架裝飾品下面,其全部容易完全擰上塗漆工藝

相反,你應該使用類似JPanel並重寫它的paintComponent方法,而不是

看看Performing Custom PaintingPainting in AWT and Swing更多細節