需要帮助从运行类运行方法

时间:2014-01-19 16:27:35

标签: java methods

我需要帮助将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级;想对第2课说嗨。

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课:想要收到嗨..但是从来没有得到任何......

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);
    }
}

感谢您的帮助。我只需要从已经运行的类中运行一个方法。我需要一个更大的程序。

2 个答案:

答案 0 :(得分:3)

你有一个构造函数作为class2对象的参数,所以为什么不使用它?在main()方法中:

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

您还可以创建一种方法来设置' class2 c2' class1中的实例:

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

修改

正如@vandale所评论的那样,您可能希望使用1个参数在构造函数中调用this(),以便正确初始化:

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

答案 1 :(得分:1)

您没有将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);


}