Container.add(Container.java:518) 异常
class A extends Object{
public static JTextField tfExpression ;
public A(){
tfExpression = new JTextField();
}
}
*****************
class CalFrame extends JFrame{
public CalFrame(){
setSize(400,250);
setTitle("简单计算器");
setLocation(200,200);
Container ctPane = getContentPane();
ctPane.setLayout(new BorderLayout());
ctPane.add(A.tfExpression,"North"); ===>>抛出异常
ctPane.add(new CalPanel(),"Center");
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
**************
java.awt.Container.addImpl(Container.java:621)
java.awt.Container.add(Container.java:518)
CalFrame.(init)(Calculator.java:180)
问题点数:20、回复次数:4Top
1 楼taglib(不懂就是不懂,别不懂装懂)回复于 2005-04-02 04:14:41 得分 15
你的静态变量是在实例构造函数里初始化的,如果你不生成一个对象,它就没有被初始化,试试
class A extends Object{
public static JTextField tfExpression ;
static {
tfExpression = new JTextField();
}
}
或者你坚持的话,试试把
ctPane.add(A.tfExpression,"North");
改成
ctPane.add(new A().tfExpression,"North");
Top
2 楼horisly(SUN YAT-SEN UNIVERSITY (逸仙先生))回复于 2005-04-02 12:16:06 得分 0
谢谢你啊!我用了你的第一种方法,可以了。
但是,我有点不明白下面这个是什么意思:
static {
tfExpression = new JTextField();
}
*********
应该不是函数吧?
是块吗?
可以这样用块的吗?是不是就象静态变量一样,在程序运行之前就已经被分配好空间的呢?Top
3 楼kingfish(工作很忙,很少来csdn...)回复于 2005-04-02 12:52:02 得分 5
static{
//
}
static block 先于构造函数执行。Top
4 楼horisly(SUN YAT-SEN UNIVERSITY (逸仙先生))回复于 2005-04-02 13:11:26 得分 0
ok
谢谢大家。
给分Top




