Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 作为参数传输的对象上的引用_Java_Object_Reference - Fatal编程技术网

Java 作为参数传输的对象上的引用

Java 作为参数传输的对象上的引用,java,object,reference,Java,Object,Reference,第三个代码示例包含错误-如何解决 在下面的代码中,我生成了一个名为generator的方法。 此方法接收一个JTextField和一个JLabel作为参数 它生成单独的JPanel并将它们添加到另一个JPanel上,即带有边框的JPanel。 结果应如下所示,标记为红色: 这里我将JTextFields实例化为字段: private JTextField txtplzvermieter; private JTextField txtemailvermieter; private JTextFie

第三个代码示例包含错误-如何解决

在下面的代码中,我生成了一个名为generator的方法。 此方法接收一个JTextField和一个JLabel作为参数

它生成单独的JPanel并将它们添加到另一个JPanel上,即带有边框的JPanel。 结果应如下所示,标记为红色:

这里我将JTextFields实例化为字段:

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