Java JFrame背景错误:不需要的透明度
我有个问题。我的JFrame以其内部的内容开始,但以透明的方式显示,内容位于顶部 谢谢你的帮助!(:两件事 第一。。。 您正在断开Java JFrame背景错误:不需要的透明度,java,swing,jframe,transparency,paint,Java,Swing,Jframe,Transparency,Paint,我有个问题。我的JFrame以其内部的内容开始,但以透明的方式显示,内容位于顶部 谢谢你的帮助!(:两件事 第一。。。 您正在断开绘制链 public void paint (Graphics g){ // You MUST call super.paint here... g.drawString("Hello World!", 250, 250); } 第二 您应该不惜一切代价避免覆盖像JFrame这样的顶级容器的paint。有很多原因,其中一个是您刚刚发现的,但也是因
绘制
链
public void paint (Graphics g){
// You MUST call super.paint here...
g.drawString("Hello World!", 250, 250);
}
第二
您应该不惜一切代价避免覆盖像JFrame
这样的顶级容器的paint
。有很多原因,其中一个是您刚刚发现的,但也是因为顶级容器不是双缓冲的,这将在绘制时引入闪烁,并且JFrame
包含一堆其他组件>JRootPane
、内容窗格、玻璃窗格……所有这些都可以覆盖您试图绘制的内容
另外,直接在框架上作画可以让你在框架的装饰下作画,这并不是你真正想要做的
例如(为什么不好)
JPanel
扩展而来的自定义类,覆盖它的paintComponent
方法,并在那里执行自定义绘制。您可以免费获得双缓冲支持,不再需要担心框架的边界,因为内容窗格将确保在框架装饰内部对其进行维护离子
有关详细信息,请参阅和
另外,在设置框架大小之前,请调用setresizeable
,这会更改框架装饰的大小,并可能在框架内容区域内产生意外的额外间距
public void paint (Graphics g){
// You MUST call super.paint here...
g.drawString("Hello World!", 250, 250);
}