我没有问题,只是一个疑问。
我不明白行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);
}
}
答案 0 :(得分:6)
您没有将构造函数传递给方法,而是传递对象。你创建了对象" in-line"在方法参数中。
此:
j.setLayout(new FlowLayout());
和此:
FlowLayout flowLayout = new FlowLayout();
j.setLayout(flowLayout);
完全相同。
未提出建议的一句话:请在此处的帖子中避免使用不必要的缩写。我推荐这个有几个原因:
答案 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