繁体   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