将构造函数传递给方法集

时间:2015-06-12 01:28:11

标签: java

我没有问题,只是一个疑问。

我不明白行setLayout(new Flowlayout);

我在想new FlowLayout()是构造函数吗? setLayou t是来自JFrame的方法。

所以我们能够将构造函数传递给方法吗? 如果是,我如何让我的方法接受构造函数?

如下面的代码所示:

package pack;

import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class frame {    

    public static void main(String args[])
    {           
        JTextField item =new JTextField("i am a text field");
        JFrame j =new JFrame("this is title");
        j.setLayout(new FlowLayout());
        j.add(item);
        j.setVisible(true);
    }
}

4 个答案:

答案 0 :(得分:6)

您没有将构造函数传递给方法,而是传递对象。你创建了对象" in-line"在方法参数中。

此:

j.setLayout(new FlowLayout());

和此:

FlowLayout flowLayout = new FlowLayout();
j.setLayout(flowLayout);

完全相同。

未提出建议的一句话:请在此处的帖子中避免使用不必要的缩写。我推荐这个有几个原因:

  1. 编程是一项精确的练习。当您在此(或任何地方)就编程问题和问题进行沟通时,您希望此沟通尽可能清晰,以避免出现歧义的可能性。我说这里至少有一半的答案是要求澄清的。让我们避免这种情况。
  2. 对于这里的许多人来说,英语不是他们的第一语言(或第二语言或第三语言)。如果用晦涩难懂的非标准缩写词来理解人们在这里张贴的东西,那就太难了。
  3. 额外的信件不会在这里花费任何费用,所以你不妨使用它们。
  4. 使用标准英语可以使您的问题显得更专业。

答案 1 :(得分:0)

FlowLayout()确实是FlowLayout类的构造函数。

但是当您使用new FlowLayout()时,您正在创建一个新的FlowLayout 对象,并将其作为参数传递给方法setLayout()

在这种情况下,您基本上是将FlowLayout的实例传递给JFrame,并且使其成为" 接受构造函数&#34 ;本身。

答案 2 :(得分:0)

如果我理解你的问题,那么不。您可以将class的实例传递给方法。在这种情况下,JFrame.setLayout(LayoutManager)采用LayoutManager的实例。您使用new FlowLayout()创建一个。在这种情况下,您的代码就像

LayoutManager anInstance = new FlowLayout();
j.setLayout(anInstance);

答案 3 :(得分:0)

很抱歉,如果这个答案没有意义,但我可能会误解你的缩写。

是的,只要您使用构建对象的new关键字,就行了。

在你的代码中,你传递了一个FlowLayout,但是从我的阅读中.setLayout()接受了一个LayoutManager