java图像用户界面 设置窗体回车对应按钮

Frame对象不就是容器最顶层吗。为什么还要f.getRootPane().setDefaultButton(btn);这个根面板JRootPane是什么。和这个Fram... Frame对象不就是容器 最顶层吗。为什么还要
f.getRootPane().setDefaultButton(btn);
这个根面板JRootPane 是什么。和这个Frame有什么区别吗。
不是很理解。求敎。
展开
 我来答
帐号已注销
推荐于2016-07-13 · TA获得超过1562个赞
知道小有建树答主
回答量:674
采纳率:0%
帮助的人:818万
展开全部
JFrame是JAVA Swing的最上层的4种组件之一,他实现了RootPaneContainer接口,而JRootPane,LayeredPane,ContentPane就是RootPaneContainer接口的容器。但JRootPane并不是真实的容器,我们不能在JRootPane上加入任何的组件!要加必须加在LayeredPane 或者是LayeredPane 里的ContentPane上。
另外,组件必须加在容器中,容器本身也是一种组件,因此,我们可以简单的理解成:先把组件放在容器中,再把容器依附在上层组件中显示出来!四个上层组件中( JFrame,JDialog,JWindow与JApplet),只包含JRootPane容器,如果要加入组件,可以先取得JRootPane的GlassPane,LayeredPane,和ContentPane中相应的一个容器,然后进行添加组件的操作!

用树形结构来简单介绍下JRootPane的组成结构,并非继承结构:
JRootPane
--Glass Pane
--Layered Pane
--Content Pane
--Menu Bar
f.getRootPane().setDefaultButton(btn); 其实首先是获得JFrame的content pane,然后再给这个content pane增加一个默认的按键。
追问
f.getRootPane().setDefaultButton(btn); 其实首先是获得JFrame的content pane,然后再给这个content pane增加一个默认的按键。

如果是获得是content pane 那没有setDefaultButton(btn)方法啊。如果这样可以
那岂不是直接f.getContentPane()就行啊??
追答
这个地方有点绕,首先Jframe只有一个JRootPane的容器,但是JRootPane不能直接增加组件,我们需要用JRootPane的GlassPane,LayeredPane,和ContentPane来增加组件。所以这个contentPane其实是JRootPane。
你去orcal的网站上看看Jrootpane的方法,里面就有这个setDefaultButton()呀。

setDefaultButton
public void setDefaultButton(JButton defaultButton)

设置 defaultButton 属性,它确定此 JRootPane 的当前默认按钮。默认的按钮是根窗格中发生 UI 定义的激活事件(通常是 Enter 键)时将被激活的按钮,无论按钮是否成为键盘焦点(除非根窗格中另有一个组件使用此激活事件,例如一个 JTextPane)。为使默认的激活正常工作,在激活发生时该按钮必须是根窗格的一个已启用的后代。要从此根窗格移除一个默认的按钮,设置此属性为 null。
参数:

defaultButton - 将成为默认按钮的 JButton
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式