Java 将元素添加到JFrame与容器之间有什么区别?
代码是:Java 将元素添加到JFrame与容器之间有什么区别?,java,swing,jframe,containers,Java,Swing,Jframe,Containers,代码是: JFrame jframe = new JFrame("no difference"); JButton button = new JButton("no difference"); jframe.getContentPane().add(button); // the same result occurs for jframe.add(button); getContentPane返回一个容器对象。如果按钮与JFrame同样适用,那么将其添加到容器中有什么意义?为什么要费心编写j
JFrame jframe = new JFrame("no difference");
JButton button = new JButton("no difference");
jframe.getContentPane().add(button);
// the same result occurs for
jframe.add(button);
getContentPane
返回一个容器
对象。如果按钮与JFrame同样适用,那么将其添加到容器中有什么意义?为什么要费心编写jframe.getContentPane().add(按钮)代码>如果我们可以做jframe.add(按钮)因为javax.swing.JFrame
是java.awt.Container
的子类,所以JFrame.add(按钮)
实际上从容器中调用add()
。这就是为什么它是相同的。因为javax.swing.JFrame
是java.awt.Container
的子类,所以JFrame.add(按钮)
实际上从容器中调用add()
。这就是为什么它是一样的。来自
作为一种惯例,add
及其变体,remove
和setLayout
已经
根据需要重写以转发到contentPane
这意味着通过JFrame.getContentPane().add()
添加组件没有意义,因为JFrame.add()
会这样做
我建议您看看这篇文章,它解释了内容窗格以及如何处理它:来自
作为一种惯例,add
及其变体,remove
和setLayout
已经
根据需要重写以转发到contentPane
这意味着通过JFrame.getContentPane().add()
添加组件没有意义,因为JFrame.add()
会这样做
我建议您看看这篇文章,它解释了内容窗格以及如何处理它:
将元素添加到JFrame与容器之间有什么区别
其他答案涵盖了问题的实际核心,即为什么在你陈述的情况下效果是相同的。因此,我将添加另一个差异。多才多艺
JFrame
(作为顶级容器)不能添加到任何其他内容中,而后者(作为简单容器)可以添加到以下内容中:
JFrame
JApplet
JWindow
JDialog
JScrollPane
JTabbedPane的选项卡
JSplitPane的一个区域
- 另一个面板中布局的单个区域
将元素添加到JFrame与容器之间有什么区别
其他答案涵盖了问题的实际核心,即为什么在你陈述的情况下效果是相同的。因此,我将添加另一个差异。多才多艺
JFrame
(作为顶级容器)不能添加到任何其他内容中,而后者(作为简单容器)可以添加到以下内容中:
JFrame
JApplet
JWindow
JDialog
JScrollPane
JTabbedPane的选项卡
JSplitPane的一个区域
- 另一个面板中布局的单个区域
你应该考虑读取框架是.jFr.Adt(Button)不等价,因为什么原因我从来都不知道。但是JFrame有几个相关的容器,ContentPane是一个(通常)需要按钮的容器。所以你需要把它放在内容窗格中,你必须明确地做它,现在他们用JFrice本身上的Add方法使它变得更方便。你应该考虑读取框架是.jFr.Add(Button)不等价,因为我从来不知道的原因。但是JFrame有几个相关的容器,ContentPane是一个(通常)需要按钮的容器。因此,您需要将它放在内容窗格中,您以前必须显式地执行此操作,现在他们已经通过JFrame本身上的add方法使其更加方便。不,它不使用基类中的add
。它将add
委托给它唯一的子组件,即JRootPane
。之前,此委派必须使用getContentPane()
手动完成,但从1.5开始,此委派是自动完成的。请参见否,它不使用基类中的add
。它将add
委托给它唯一的子组件,即JRootPane
。之前,此委派必须使用getContentPane()
手动完成,但从1.5开始,此委派是自动完成的。请参阅@vopros-voprosovich:Use以查看包含层次结构的列表。@trashgod-DYM以使用从该线程链接的Swing Explorer中的那些快捷方式?哦我现在明白了,这不是你的意思P@voprosvoprosovich:用于查看包含层次结构的列表。@trashgod DYM使用Swing Explorer中与该线程链接的那些快捷方式?哦我现在明白了,这不是你的意思P