关于JFrame

zk20052009 2009-08-09 01:08:37
JFrame包含很多pane
从上往下
glasspane
contentpane
layeredpane
rootpane
看下代码:

import java.awt.*;
import javax.swing.*;

public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame();
Component p = frame.getGlassPane();
Container pp = frame.getContentPane();
JLayeredPane ppp = frame.getLayeredPane();
JRootPane pppp = frame.getRootPane();
//((JComponent)pp).setOpaque(false); //1
//pppp.setOpaque(false); //2
p.setBackground(Color.YELLOW);
pp.setBackground(Color.BLACK);
ppp.setBackground(Color.GREEN);
pppp.setBackground(Color.BLUE);
frame.setBackground(Color.RED);
frame.setSize(100, 100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

运行结果显示的是黑色,这是因为glasspane是透明的,contentpane不透明
将一句的注释去掉,让contentpane透明,这时候看到的颜色是蓝色
因为layeredpane透明,rootpane不透明
将2句的注释也去掉,让rootpane透明,并没有得到期望的红色
而是白色,好像还有至少一层东西在frame之上
白色这层是什么,看了会源码也没找到
希望高手解答
...全文
126 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zk20052009 2009-08-10
  • 打赏
  • 举报
回复
找了一个同学XP的机子和我java版本一模一样
运行出来也是白的 看来不是操作系统的问题了

用一台XP的机子 java版本
java version "1.6.0_13"
Java(TM) SE Runtime Environment (build 1.6.0_13-b03)
Java HotSpot(TM) Client VM (build 11.3-b02, mixed mode, sharing)
是红的 怀疑还是版本的问题

谢谢大家了
hui94781674 2009-08-09
  • 打赏
  • 举报
回复
晕了,我的也是白的。。

我的是myeclipse 6.5
java version "1.6.0_02"
Java(TM) SE Runtime Environment (build 1.6.0_02-b06)
Java HotSpot(TM) Client VM (build 1.6.0_02-b06, mixed mode, sharing)
zk20052009 2009-08-09
  • 打赏
  • 举报
回复
那可能是我这里的原因了
可能是我操作系统(vista)的一些原因
我明天找个XP的看一下
谢谢了啊
jinxfei 2009-08-09
  • 打赏
  • 举报
回复
我是1.5
一头头 2009-08-09
  • 打赏
  • 举报
回复
2个注释掉 黑哒
2个加上 红哒

java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) Client VM (build 14.0-b16, mixed mode, sharing)
zk20052009 2009-08-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jinxfei 的回复:]
试了一下楼主的代码,两个注释都去掉,得到的是红色。
[/Quote]

我的java版本是
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing)
难道是版本的问题,注释的句子也执行的话出来的是白色
jinxfei 2009-08-09
  • 打赏
  • 举报
回复
试了一下楼主的代码,两个注释都去掉,得到的是红色。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧