【发布时间】:2012-11-03 12:15:11
【问题描述】:
我对编程电路很陌生,并且我正在尝试系统地学习 Java,目前最终在 Swing 结束。我想我知道 void 方法的作用和用途,但我无法理解这段示例代码(摘自http://docs.oracle.com --BorderLayoutDemo):
public class BorderLayoutDemo {
public static void addComponentsToPane(Container pane) {
JButton button = new JButton("Button 1 (PAGE_START)");
pane.add(button, BorderLayout.PAGE_START);
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("BorderLayoutDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
**addComponentsToPane(frame.getContentPane());**
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
createAndShowGUI();
}
}
为什么这段代码可以工作,导致一个带有 1 个按钮的窗口(我预计这只会导致一个空窗口)。是否将 frame.getContentPane() 作为参数复制到 addComponentsToPane() 并在此 void 方法结束时销毁(未添加到框架)?为什么它不应该返回一个 Container 对象或 JPanel 对象,然后可以将其添加到框架中(即 frame.add())。
(已编辑问题。pivot 关键字是无效的,而不是静态的。我看到我已经用原始类型教授了这个概念(无效方法),这使问题变得混乱)
【问题讨论】:
-
没有人理解你为什么认为它行不通。这不是很好的代码,但每个语句都非常清楚它的作用。 addComponentsToFrame 将组件添加到您在参数中提供的内容框架。一旦它们被添加,框架就会被打包并显示(setVisible)。非常简单。
-
但我确实理解为什么 Stegeman 认为它行不通;这个问题也很清楚他认为会发生什么,并且很容易解释哪些假设是错误的。他得到的答案解决了他明确的问题,你说“没人理解”是不正确的。
-
我尝试稍微压缩代码以保持问题简短并显示相关陈述。 Tzhechev 先生确实了解我。 (忍者)