2014-02-24 96 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更多细节