刚刚用Jigloo GUI Builder, 遇到一个问题,真是费解呀!我想做一个自定义的TextField,当我在其中输入完内容按回车时,焦点会自动转移到下个控件,像按了TAB一样,于是自定义了一个类:import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JTextField;public class MyTextFiled extends JTextField {
/**
*
*/
private static final long serialVersionUID = 1L; public MyTextFiled() {
super();
init();
} private void init() {
try {
addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent evt) {
//Enter代替Tab...
}
});
} catch(Exception e) {
}
}
}然而无法使用这个控件, 报错:
Error creating test.MyTextField
java.lang.reflect.InvocationTargetException, 如果将构造器中的init()注释掉,自定义控件便可以使用,这是为什么??
import java.awt.event.KeyEvent;
import javax.swing.JTextField;public class MyTextFiled extends JTextField {
/**
*
*/
private static final long serialVersionUID = 1L; public MyTextFiled() {
super();
init();
} private void init() {
try {
addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent evt) {
//Enter代替Tab...
}
});
} catch(Exception e) {
}
}
}然而无法使用这个控件, 报错:
Error creating test.MyTextField
java.lang.reflect.InvocationTargetException, 如果将构造器中的init()注释掉,自定义控件便可以使用,这是为什么??
addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent evt) {
//Enter代替Tab...
}
});
} catch(Exception e) {
}
搞了半天终于明白了:
我在ClassB中引用了自定义控件ClassA,并且在ClassB代码被打开时对ClassA作为改动,导致了不一致,产生了如上的错误.如果要在ClassB引用改动后的ClassA,则需要将ClassB代码重新打开一次.