簡體   English   中英

需要幫助從運行類中運行方法

[英]Need help to run method from running class

我需要幫助將String從正在運行的類傳遞到另一個正在運行的類。 我舉了一個小例子,應該可以進一步解釋我的問題。

主班 運行1級和2級

public class main {
    public static void main(String[] args){
        class2 c2 = new class2();
        c2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        c2.setSize(200,100);
        c2.setLocationRelativeTo(null);
        c2.setVisible(true);
        class1 c1 = new class1(c2);
        c1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        c1.setSize(200,100);
        c1.setLocationRelativeTo(null);
        c1.setVisible(true);
        ;

    }
}

1級 想在第二節課打招呼

public class class1 extends JFrame{
    private JButton jb;

    private class2 c2;
    public class1(class2 c2){
        this();
        this.c2 = c2;
        }


    public class1(){
        super("");
        setLayout(new FlowLayout());

        jb = new JButton("click click");
        add(jb);

        jb.addActionListener(
                new ActionListener(){
                    public void actionPerformed(ActionEvent e){
                        sayHi("Hi buddy");
                    }});
    }
    public void sayHi(String x){
        c2.recieveHi(x);
    }

}

第2類:想獲得一個Hi ..但從來沒有得到任何...

public class class2 extends JFrame{

    private JTextField jt;

    public class2(){
        super("Yeds");
        setLayout(new FlowLayout());

        jt = new JTextField();
        add(jt);
        //recieveHi("hey");
    }

    public void recieveHi(String x){
        String j = x;
        jt.setText(j);
    }
}

多謝您的協助。 我只需要從已經運行的類中運行一個方法。 我需要一個更大的程序。

您有一個將class2對象作為參數的構造函數,那么為什么不使用它呢? main()方法中:

class2 c2 = new class2();
class1 c1 = new class1(c2); // Use constructor with 'class2' parameter
...

您還可以創建一個方法來在class1設置“ class2 c2”實例:

public void setClass2Object(class2 pC2) {
    this.c2 = pC2;
}

編輯:

正如@vandale所評論的那樣,您可能想在構造函數中使用1參數調用this() ,以便正確初始化它:

public class1(class2 c2) {
    this();
    this.c2 = c2;
}

您沒有將C2類的對象傳遞給C1類的構造函數。

因為您沒有傳遞c2類的對象,所以在調用sayHi(...)時應該得到NullPointerException

請看一下重新排列的代碼塊

public static void main(String[] args){

    class2 c2 = new class2();
    c2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    c2.setSize(200,100);
    c2.setLocationRelativeTo(null);
    c2.setVisible(true);

    class1 c1 = new class1(c2);
    c1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    c1.setSize(200,100);
    c1.setLocationRelativeTo(null);
    c1.setVisible(true);


}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM