社区
Java SE
帖子详情
JRootPane这个类是不是多余的啊?
sure2003
2009-02-11 04:15:17
我觉得十分奇怪。这个类可能不是很用。
JFrame对象的getRootPanel().setDefaultButton(buttonOK);
有意义吗?
我觉得完全可以用其实方法来实现JRootPanel里的方法。
不知道我的看法是否正确。
...全文
381
4
打赏
收藏
JRootPane这个类是不是多余的啊?
我觉得十分奇怪。这个类可能不是很用。 JFrame对象的getRootPanel().setDefaultButton(buttonOK); 有意义吗? 我觉得完全可以用其实方法来实现JRootPanel里的方法。 不知道我的看法是否正确。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
SQLserver2009
2009-11-16
打赏
举报
回复
你滴图片看不到啊!!
不善^
2009-02-11
打赏
举报
回复
只有你用不到,没有多余的
oO小良Oo
2009-02-11
打赏
举报
回复
API上拷来的,喜欢的话给点分。
谢谢~
oO小良Oo
2009-02-11
打赏
举报
回复
public class JRootPaneextends JComponentimplements Accessible该轻量级容器由 JFrame、JDialog、JWindow、JApplet 和 JInternalFrame 在后台使用。有关根窗格所提供功能的面向任务的信息,请参阅《The Java Tutorial》中的 How to Use Root Panes 一节。
下面的图像显示了使用根窗格的各个类之间的关系。
“重量级”组件(指委托给主机系统上的同位体或本地组件的组件)用较暗的、更重的框来显示。四个重量级 JFC/Swing 容器(JFrame、JDialog、JWindow 和 JApplet)的显示与它们扩展的 AWT 类有关。这四个组件是 Swing 库中仅有的重量级容器。这里还显示了轻量级容器 JInternalPane。所有这五个 JFC/Swing 容器都实现 RootPaneContainer 接口,并且它们都将其操作委托给 JRootPane(顶端显示有一个小 "handle")。
注:使用 JComponent 的 getRootPane 方法可获取包含给定组件的 JRootPane。
右图显示了 JRootPane 的结构。JRootpane 由一个 glassPane 和一个可选的 menuBar 以及一个 contentPane 组成。(JLayeredPane 负责管理 menuBar 和 contentPane。)glassPane 位于所有窗格之上,以便能够截取鼠标移动。由于 glassPane(与 contentPane 类似)可以是一个任意的组件,也可以设置 glassPane 来进行绘制。这样 glassPane 上的线条和图像可涵盖其下的窗体,不受其边界的限制。
尽管 menuBar 组件为可选,但 layeredPane、contentPane 和 glassPane 总是存在的。试图将它们设置为 null 将生成异常。
要将组件添加到 JRootPane(可选的菜单栏除外),您可以将对象添加到 JRootPane 的 contentPane,如下所示:
rootPane.getContentPane().add(child);
可用同样的方法设置布局管理器、移除组件以及列出子级等。所有这些方法都是在 contentPane 上而不是 JRootPane 上调用的。
注:contentPane 的默认布局管理器是 BorderLayout 管理器。但是,JRootPane 使用一个自定义的 LayoutManager。所以,如果您希望更改已添加到 JRootPane 中的组件的布局管理器,一定要确保使用如下代码:
rootPane.getContentPane().setLayout(new BoxLayout());
如果已在 JRootPane 上设置了 JMenuBar 组件,它将沿窗体的上边缘放置。contentPane 的位置和大小将进行调整以填充剩余的区域。(JMenuBar 和 contentPane 被添加到位于 JLayeredPane.FRAME_CONTENT_LAYER 层的 layeredPane 组件中。)
layeredPane 是 JRootPane 中所有子级的父级,既是菜单的直接父级,又是添加到 contentPane 中的所有组件的祖父级。它是 JLayeredPane 的实例,提供在若干层上添加组件的能力。在处理弹出菜单、对话框以及拖动时,即要求将组件置于窗格中所有其它组件之上的情况下,此功能非常有用。
glassPane 位于 JRootPane 中所有其它组件之上。这为在所有其它组件上绘图和截取鼠标事件提供了方便,这对拖动和绘图都非常有用。开发人员可在 glassPane 上使用 setVisible 控制 glassPane 在所有其它子级上面显示的时间。默认情况下,glassPane 为不可见。
JRootPane 所使用的自定义 LayoutManager 可确保:
glassPane 填充了 JRootPane 的整个可查看区域(边界 - insets)。
layeredPane 填充了 JRootPane 的整个可查看区域。(边界 - insets)
menuBar 位于 layeredPane 的上边缘。
contentPane 填充了整个可查看区域,减去 menuBar(如果有)。
JRootPane 视图层次结构中的任何其它视图均忽略。
如果您替换 JRootPane 的 LayoutManager,您将负责管理所有这些视图。所以通常情况下,应该确保更改的是 contentPane 的布局管理器,而不是 JRootPane 自身的布局管理器。
Swing 的绘制架构要求在所有其它组件之上的包含层次结构中有一个不透明的 JComponent。这通常通过使用内容窗格来实现。如果要替换内容窗格,建议使用 setOpaque(true) 将内容窗格设置为不透明。另外,如果内容窗格重写 paintComponent,还需要在 paintComponent 中用不透明颜色将背景完全填充。
Java swing简介
FlowLayout
类
是最简单的布局管理器,它按照从左到右的顺序安排组件,直至没有
多余
的空间,然后转到下一行。 BorderLayout对象将界面分成五大区域,分别用BorderLayout
类
的静态常量指定:PAGE_START(上)、PAGE_...
《软件设计重构》读书笔记(6)-层次结构型缺陷
显然这两个
类
不存在is-a关系;2)java.util.Properties继承了java.util.Hashtable,Object>
类
,导致可以使用put()和putAll()方法向Properties中插入非String的键值;3)java.util.Date
类
是java.sql.Date和java.sql....
我被老板炒鱿鱼了!因为我在IDE里看漂亮小姐姐跳舞!(IntelliJ IDEA插件开发之打造炫酷动态背景墙)
我那时候是纯黑色的壁纸,视频也刚好播放到白色衣服人物在黑夜中的画面,加上若隐若现的应用程序图标,这虚实结合的效果使得画面中的人物变得立体起来了!甚至有一种身临其境的感觉! 我当时就觉得,哇这种效果好棒...
JavaSwing学习总结
Swing是一个用于开发Java应用程序用户界面的开发工具包,是由纯Java实现的。以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格,不依赖操作系统的支持,这是它与AWT组件的最大区别。Swing...
java图形化GUI编程-Awt&Swing(一文解决)
java使用AWT和Swing相关的
类
可以完成图形化界面编程,其中AWT的全称是抽象窗口工具集(Abstract Window Toolkit),它是sun公司最早提供的GUI库,这个GUI库提供了一些基本功能,但这个GUI库的功能比较有限,所以后来...
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章