0

我无法将变量class main传递给另一个类class members...我尝试使用 getter-setter 但它只返回一个null值,我该如何解决?这是我的代码:

主.java

public class Main extends JFrame{

 JTextField txt = new JTextField(10);
 String value;

    Main(){

        getContentPane().add(txt);


        this.value = txt.getText(); 

        setLayout(new FlowLayout());
        setSize(300,200);
        setVisible(true);

    }//constructor of main


    public String getValue(){

        return this.value;

    }//getValue

    public static void main(String args[]){
        new Main();
    }//psvm

}//class main

成员.java

public class Members extends JFrame{

    JLabel lbl = new JLabel("");

    Main main = new Main();

    Members(){

        getContentPane().add(lbl);

        main.setVisible(false);

        lbl.setText(main.getValue());

        setLayout(new FlowLayout());
        setSize(300,200);
        setVisible(true);

    }//constructor of main

    public static void main(String args[]){
        new Members();
    }//psvm

}//class members
4

2 回答 2

0

在您的Members-class的代码中有两个名为的成员main,它们是一个Main-class 对象一个main()-method

根据OOP原则,除了方法重载,一个类不能有多个同名成员。

Main将-class 对象的名称从mainto更改为main1其他名称。希望这能解决您的问题。

使用以下代码片段 -

public class Members extends JFrame{

    JLabel lbl = new JLabel("");

    Main main1 = new Main();

    Members(){

        getContentPane().add(lbl);

        main1.setVisible(false);

        lbl.setText(main1.getValue());

        setLayout(new FlowLayout());
        setSize(300,200);
        setVisible(true);

    }//constructor of main

    public static void main(String args[]){
        new Members();
    }//psvm

}//class members
于 2013-09-28T17:14:12.993 回答
0

在您的场景中,您将获得 null 值,因为在构造函数中设置了值

this.value = txt.getText(); 

确保在更新文本字段时更新 this.value

JTextField txt = new JTextField(10);

将Listener添加到txt的更好方法

txt.getDocument().addDocumentListener(new DocumentListener() {
     public void changedUpdate(DocumentEvent e) {
    //update value
   }});
于 2013-09-28T16:48:23.127 回答