java图像用户界面 设置窗体回车对应按钮
Frame对象不就是容器最顶层吗。为什么还要f.getRootPane().setDefaultButton(btn);这个根面板JRootPane是什么。和这个Fram...
Frame对象不就是容器 最顶层吗。为什么还要
f.getRootPane().setDefaultButton(btn);
这个根面板JRootPane 是什么。和这个Frame有什么区别吗。
不是很理解。求敎。 展开
f.getRootPane().setDefaultButton(btn);
这个根面板JRootPane 是什么。和这个Frame有什么区别吗。
不是很理解。求敎。 展开
1个回答
展开全部
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增加一个默认的按键。
另外,组件必须加在容器中,容器本身也是一种组件,因此,我们可以简单的理解成:先把组件放在容器中,再把容器依附在上层组件中显示出来!四个上层组件中( 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
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询