[英]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.