簡體   English   中英

Java JFrame顯示不正確

[英]Java JFrame is displayed incorrectly

當我運行程序時, JFrame顯示JFrame ,然后顯示JFrame打開后的內容。

框架表現不佳

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();
    }

歡迎來到“親愛的,我打破了油漆鏈”的美好世界...

Swing中的繪畫由一系列鏈接在一​​起的方法調用組成,這些方法調用一起工作以產生最終結果,其中一個方法實際上用組件的背景色填充了Graphics上下文。

不遵守該油漆鏈將不會導致油漆偽影的終結。 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);
}

你未來的解決將是避免壓倒一切的paint頂層容器一樣的JFrame從事實的一部分,它不是雙緩沖和繪畫將發生幀裝飾下,它的所有容易完全搞砸了烤漆工藝

相反,您應該使用JPanel之類的東西,並改寫它的paintComponent方法

看一下在AWT和Swing執行自定義繪畫繪畫以獲取更多詳細信息

我用了這樣的東西:

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);

}
}

而且效果很好。 也許嘗試將事物的順序更改為我所擁有的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM