2016-09-24 42 views
0

我是Java的新手,我真的爲我的課而苦苦掙扎。我需要聲明在java中的JPanel類之間共享變量

 student st1 = new student ("Grant", "Kline", 21); 

一次,並讓兩個不同的類使用它。我可以通過將該行添加到每個類中來使其工作,但分配不允許這樣做。 st1.getInfo()和st1.whatsUp()將返回正確的信息時,我有

 student st1 = new student ("Grant", "Kline", 21); 
在CenterPanel和TopPanel

這裏是我的所有類

public class app 
{ 
    public static void main(String args[]) 
{ 

myJFrame mjf = new myJFrame(); 

} 
} 

public class myJFrame extends JFrame 
{ 
    public myJFrame() 
    { 
     super ("My First Frame"); 
     ControlJPanel mjp = new ControlJPanel(); 
     getContentPane().add(mjp,"Center"); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setSize (800, 480); 
     setVisible(true); 
    } 
} 
public class ControlJPanel extends JPanel 
{ 
public ControlJPanel() 
{ 

    super(); 
    setLayout(new BorderLayout()); 
    CenterPanel centerP = new CenterPanel(); 
    TopPanel topP = new TopPanel(); 
    add(topP, "North"); 
    add(centerP, "Center"); 

} 
} 
public class TopPanel extends JPanel 
{ 
    public TopPanel() 
    { 
     super(); 
     setBackground(Color.yellow); 
     JButton jb1 = new JButton(st1.getInfo()); 
     add(jb1); 
    } 
} 
public CenterPanel() 
    { 
    super(); 
    GridLayout grid = new GridLayout(0,1); 
    setLayout(grid); 

    JButton jb2 = new JButton(st1.whatsUp()); 
    add(jb2); 

    JButton jb3 = new JButton(st1.whatsUp()); 
    add(jb3);   

    JButton jb4 = new JButton(st1.whatsUp()); 
    add(jb4); 

    JButton jb5 = new JButton(st1.whatsUp()); 
    add(jb5); 

    JButton jb6 = new JButton(st1.whatsUp()); 
    add(jb6); 

    JButton jb7 = new JButton(st1.whatsUp()); 
    add(jb7); 

    JButton jb8 = new JButton(st1.whatsUp()); 
    add(jb8); 

    JButton jb9 = new JButton(st1.whatsUp()); 
    add(jb9); 

    JButton jb10 = new JButton(st1.whatsUp()); 
    add(jb10); 

    JButton jb11 = new JButton(st1.whatsUp()); 
    add(jb11); 
    } 
} 

我也有一個學生類,我不能添加代碼。

回答

0

您需要創建類屬性,例如

public class TopPanel extends JPanel 
{ 
    private Student std = null; 
    public TopPanel() 
    { 
//... code 
    public void setStudent(Student std) { 
    this.std = std; 
    } 

然後創建TopPanel

Student st1 = new Student ("Grant", "Kline", 21); 
TopPanel tp = new TopPanel(); 
tp.setStudent(st1); 

CenterPanel cp = new CenterPanel(); 
cp.setStudent(st1); 

當在傳遞一個Student對象的兩個differetn面板參考這樣的方式對象