簡體   English   中英

需要幫助鏈接課程

[英]Need help to link classes

如標題所示,我需要幫助鏈接類。 我有一個主要的班級,還有4個班級將互相傳授!

我的代碼:

主類:運行所有4個類

public class main {
    public static void main(String[] args){ 
        class4 c4 = new class4();
        class3 c3 = new class3(c4);
        class2 c2 = new class2(c3);

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

class1:將String傳遞給class2中的方法。

public class class1 extends JFrame{
    private JButton jb;

    private class4 c4;
    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);
    }

    public void recieveHi(String x){
        System.out.println(x);
    }

}

class2:從class1輸出字符串,並將字符串傳遞給class3

public class class2 extends JFrame{
    private JTextField jt;

    private class3 c3;

    public class2(class3 c3){
        this();
        this.c3 = c3;
    }

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

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

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

    public void sayHi(){
        c3.recieveHi("Hey class3");
    }
}

class3:從class2輸出字符串,並將字符串傳遞給class4

public class class3 {
    Scanner scan = new Scanner(System.in);

    private class4 c4;
    public class3(class4 c4){
        //this();
        this.c4 = c4;
        }

    public void recieveHi(String x){
        System.out.println(x);
        sayHi();

        //sayHi();
    }
    public void sayHi(){
        System.out.println();
        c4.recieveHi("Hey class4");
    }
}

class4:從class3輸出字符串,並且應該將String發送回class1。 但是我不能使它工作。

問題是我無法在主類中鏈接它們,因為: class4 c4 = new class4(c1); 不起作用,不是在class4需要時簡單地創建c1 ,所以這不是一個選擇。

    public class class4 {
    private class1 c1;

    //this are supposed to work, but doesnt...
    public void setClass1Object(class1 pC1) {
        this.c1 = pC1;
    }

    public void recieveHi(String x){
        System.out.println(x);
        killMessenger();
        setClass1Object(c1);
    }

    public void killMessenger(){
        String s = "back to class 1";
        c1.recieveHi(s);
    }
}

簡單來說,我需要的是能夠將String發送回class1。 我需要一個更大的項目,並且所有類都必須從主類中打開。

我認為您是否應該首先初始化所有類,然后再將它們設置為可見。 如果您這樣做可能會起作用:

public static void main(String[] args){ 
  class4 c4 = new class4();
  class3 c3 = new class3(c4);
  class2 c2 = new class2(c3);
  class1 c1 = new class1(c2);
  c4.setClass1Object(c1);
  // here make all the setters like setSize, setVisible etc
}

暫無
暫無

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

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