如何理解 Swing的用户界面组件 中 Container c = this.getContentPane(); 只剩10分了, 不是扣

OK102030 2005-03-19 10:31:55
// 如何理解 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无关
}

}
...全文
330 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyingon 2005-03-28
  • 打赏
  • 举报
回复
哇,我用了这么久,还没有考虑过这个问题,学习

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧