java - 使用 void 方法添加按钮

标签 java swing static addition

我对编程领域还很陌生,我正在尝试系统地学习 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 关键字是 void,而不是 static。我发现我已经被教导了这个概念(void 方法)和原始类型,这使问题变得困惑)

最佳答案

该对象通过引用传递并且不被复制。 Java 通过引用而不是通过值传递对象,就像您在 C 等语言中所习惯的那样。因此,您使用 addComponentsToPane(frame.getContentPane()); 传递的是对框架的内容 Pane 。

然后,静态方法使用该引用将按钮添加到实际内容 Pane 。对象不被复制是有充分理由的。例如,想象一下创建一个包含大量数据的类。每次将此类传递给函数时都复制此类是没有意义的。

对于 Java 中的“原始”类型,例如“int”或“double”,有一个异常(exception)。它们的处理方式与您在 C/C++ 中学到的方式相同。但是请记住,Integer 和 Double 是类。

希望有帮助!

关于java - 使用 void 方法添加按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13209082/

相关文章:

java - 为什么 hashCode() 函数会生成错误

java - 从线程中读取数据(在 Servlet 中)

java - 具有多个图像的 Jpanel - 内存使用情况

java - java和PHP之间使用static的区别?

java - 接口(interface)的成员变量必须是最终的......为什么?

java - 使用 Guava Reflection 引用私有(private)字段

java - Java Swing 中的 PropertyGrid

java - 处理两个 JOptionPane showInputDialog 中的 java 取消按钮

swift - 在 Swift 中,是否有像 self 这样的关键字,但用于类?

java - JMenuItems 没有响应