Java 作为参数传输的对象上的引用
第三个代码示例包含错误-如何解决 在下面的代码中,我生成了一个名为generator的方法。 此方法接收一个JTextField和一个JLabel作为参数 它生成单独的JPanel并将它们添加到另一个JPanel上,即带有边框的JPanel。 结果应如下所示,标记为红色: 这里我将JTextFields实例化为字段:Java 作为参数传输的对象上的引用,java,object,reference,Java,Object,Reference,第三个代码示例包含错误-如何解决 在下面的代码中,我生成了一个名为generator的方法。 此方法接收一个JTextField和一个JLabel作为参数 它生成单独的JPanel并将它们添加到另一个JPanel上,即带有边框的JPanel。 结果应如下所示,标记为红色: 这里我将JTextFields实例化为字段: private JTextField txtplzvermieter; private JTextField txtemailvermieter; private JTextFie
private JTextField txtplzvermieter;
private JTextField txtemailvermieter;
private JTextField txtgeburtsdatumvermieter;
private JTextField txthandyvermieter;
private JTextField txtidvermieter;
private JTextField txtnamevermieter;
private JTextField txtortvermieter;
private JTextField txtstrassevermieter;
private JTextField txttelefonvermieter;
private JTextField txtvornamevermieter;
我在这里调用我上面描述的方法
public void vermieterPanel(JPanel verPanel){
verPanel.add(generator( "ID", txtidvermieter ));
verPanel.add(generator("Name", txtnamevermieter ));
verPanel.add(generator( "Vorname", txtvornamevermieter ));
verPanel.add(generator( "Straße", txtstrassevermieter ));
verPanel.add(generator("PLZ", txtplzvermieter ));
verPanel.add(generator( "Ort", txtortvermieter ));
verPanel.add(generator( "Geburtsdatum", txtgeburtsdatumvermieter ));
verPanel.add(generator( "Telefon", txttelefonvermieter ));
verPanel.add(generator("Handy", txthandyvermieter ));
verPanel.add(generator( "E-Mail", txtemailvermieter ));
这是methode生成器,其中包含错误:
public JPanel generator(String lableText, JTextField s){ // generiert ein Panel mit einer Zeile aus lable + TextFeld
JPanel gens = new JPanel();
JLabel lable = new JLabel(lableText);
lable.setPreferredSize(new Dimension(100,25));
s = new JTextField();
s.setPreferredSize(new Dimension(200, 25));
gens.add(lable);
gens.add(s);
return gens;
}
后来,我无法通过.getText获得有关我的TeftFields的参考资料;因为我已经在一个新的JTextField对象上创建了一个引用,这里s=newjtextfield
如果为了访问对象而删除该行,则会出现空指针异常
我做错了什么?原始值从未生成过。你需要这样做
private JTextField txtplzvermieter = new JTextField();
对他们每个人来说。但是它必须在方法外部,而不是内部。在java中,不能将对象作为引用传递,这永远不会发生
这就是创建java语言、最小内存管理的目的
如果将对象作为参数传递,则将传递对象引用的副本
因此,对象字段上的每一个更改都会被反映出来,除非将其分配给具有新关键字的新对象,否则您将失去对对象的抓取
尝试将Jfields设置为全局类字段,不要通过parameters部分将它们传递给方法。当然,您会得到一个异常,因为您在初始化jtexfield之前传递了它!! 你只是在宣布,
在将其作为参数传递之前,使用new关键字初始化它。谢谢您的建议,但我已经尝试过了。如果删除该行,则在database.Gui.generatorGui.java:192 at database.Gui.mieterPanelGui.java:173 at database.Gui.stammdatenErfassenGui.java:139 at database.Gui.actionPerformeGUI.java:241thx的线程AWT-EventQueue-0 java.lang.nullPointerException中会得到一个nullPointerException:Exception-这非常有用!我的JFields已经是全球级的领域了!如果我不能在对象上传递引用,我如何编写methode generator universal,以便它为每个文本字段生成带有JLabel和JTextfield的JPanel?哇。忘了提及引用JTextFields的methode initComponents调用。即使我这样声明JTextField:private JTextField txtplzvermiter=newjtextfield;私有JTextField txtemailveriter=新JTextField;私有JTextField txtgeburtsdatumvimeter=新JTextField;专用JTextField txthandyvermiter=新JTextField;私有JTextField txtidviremeter=新JTextField;我仍然会得到相同的NullPointerDebug代码,并在生成器的入口点监视您的字段,看看发生了什么!当我调试时,我看到生成器方法很好!错误就在这里:mieterpanel mietpanel;mieterpanel mietobjektpanel;第二行导致了错误,因为mietObjektPanel只包含一些随机的东西,我认为是它们导致了空指针,并将它添加到mieterPanel中,而不是一个新的面板。。。当我创建了一个新面板,并用generator方法构建了mietObjektPanel时,它就像一个魔咒。以前从未使用过调试器,因此我学习了一项新技能-thx