我需要帮助将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);
}
}
感谢您的帮助。我只需要从已经运行的类中运行一个方法。我需要一个更大的程序。
答案 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);
}