如何理解 Swing的用户界面组件 中 Container c = this.getContentPane(); 只剩10分了, 不是扣
// 如何理解 Swing的用户界面组件 中 Container c = this.getContentPane(); ?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Foo
{
public static void main(String[] args)
{
FrameTest frm = new FrameTest("匿名类 ");
frm.pack(); // 最合适大小
frm.show();
}
}
class FrameTest extends JFrame
{
private JButton button;
public FrameTest(String str)
{
super(str); // extends JFrame
Container c = this.getContentPane();
// 以下三种说法哪种是对的, 或者都错了, 您的理解是怎样的.
// A: this.getContentPane(); 向上造型为Container的实例, 布局管理在Container的对象中实现
// B: 父类Container的句柄指向子类JFrame的实例, 所有的布局管理在父类中实现
// C: 构造一个新建 Container 。容器可被直接扩展,相当于Jframe.add 但在这种情况下,它的开销较低并且必须包含在本地组件树中更高层的父类中。
c.setLayout(new FlowLayout());
JButton button = new JButton("OK");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
System.out.println ("OK"); // 按键响应
}
});
c.add(button);
//error: this.add(button); this = FrameTest 所有与布局有关的事件在父类Container中完成, 与子类JFrame无关
}
}