我是Java的初学者,遇到了一个问题。希望我会在这里得到一些提示。我使用 Intellij IDEA 15.0社区版 我正在尝试创建一个表单,非常简单,现在是2x JTextField。 我创建了测试项目来帮助您理解我的查询。
Main.java(这是我们开始的地方)
public class Main {
public static void main(String[] args) {
MyObject ob = new MyObject();
System.out.println("MyObject: "+ob.testInteger);
JFrame wrapper = new JFrame("Intellij Test");
MyWindow myWindow = new MyWindow(ob);
wrapper.setContentPane(myWindow);
wrapper.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
wrapper.setVisible(true);
}
}
MyObject.java
public class MyObject {
public int testInteger;
public MyObject() {
testInteger = 120;
}
}
MyWindow.java
public class MyWindow extends JFrame {
private JTextField myTextField;
private JPanel myWindowPanel;
private MyObject mob;
public MyWindow(MyObject ob) {
System.out.println("This code should ran first???");
this.mob = ob;
myTextField = new JTextField();
}
private void createUIComponents() {
System.out.println("But this one is ran instead");
String test = ""+mob.testInteger;
myTextField.setText("MyObject value is: "+test);
}
}
我的表单只是普通的JPanel,其中一个JTextField在图形表单生成器中完成,其中应用了名称,并为myTextField和myWindowPanel勾选了Custom Create。
这是输出:
MyObject: 120
But this one is ran instead
Exception in thread "main" java.lang.NullPointerException
at MyWindow.createUIComponents(MyWindow.java:27)
at MyWindow.$$$setupUI$$$(MyWindow.java)
at MyWindow.<init>(MyWindow.java:19)
at Main.main(Main.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Process finished with exit code 1
这对我的初学者技能造成了很大的问题,因为我不知道如何将对象传递给我的GUI,所以我有数据来填充JTextFields。
这是我的第一次OO编程尝试,希望我能在这里得到一些有趣的建议。
谢谢, 马切伊