日期:2014-05-20  浏览次数:20808 次

JFrame不能用add()?还是孙卫琴姐姐说错了?
在《java逍遥游记》中P198页提到JFrame和Frame的做大区别在于前者不能通过add()方法加入组件,也不能直接通过setLayout()方法设置布局。以下代码是错误的,运行时将抛出错误

JFrame jFrame = new JFrame("hello");
jFrame.setLayout(new GridLayout(2,1));

jFrame.add(jLabel);
jFrame.add(jButton);


在具体的例子中她又这样说了
/**//wrong
setLayout(new GridLayout(2,1));

add(jLabel);
add(jButton);
*/
她用的是
Container contentPane = getContentPane();
contentPane.setLayout(new GridLayout(2,1));
contentPane.add(jLabel);
contentPane.jFrame.add(jButton);

我直接用的
setLayout(new GridLayout(2,1));

add(jLabel);
add(jButton);
编译和运行都没问题啊 书上说的是对的吗?


------解决方案--------------------
我一直都是JFrame对象调用setLayout和add 运行时反正没错
------解决方案--------------------
java 1.5 之前的确是不行的
------解决方案--------------------
没错,我也是一直这么写的!
------解决方案--------------------
探讨

这本书可是2010年出版的!
引用:

java 1.5 之前的确是不行的

------解决方案--------------------
探讨

这本书可是2010年出版的!


------解决方案--------------------
话说,当年真是这样子的,所有同时介绍awt/swing的书,都会这样写
------解决方案--------------------
中文书只能当领进门的作用,修行的时候,只能靠自身,以及更多时候,信任官方资料或网上的英文资料。中文资料,有太多无责任转贴
------解决方案--------------------
书,也是根据api才能写得出来的,以api为基准。话说那种书2,3天就要翻完的吧,看多了没意思,把有用的例子要用到的时候在细细地研究一下,多运行,敲一下,如果只是纯粹学知识点去学知识点,效果不好,容易误入歧途。