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