JPanels之间的沟通

时间:2015-02-14 16:57:37

标签: java swing jpanel communication

我有一个JPanel类,可以创建一个panel1和一个panel2。 Panel1和Panel2各有一个按钮。我想要完成的是当我点击Panel1中的按钮时,它会更新Panel2中的按钮。我必须这样做而不改变Panel2中的任何内容。 基本上我必须让Panel1有一种方法来跟踪Panel2的实例,我必须通过JPanel类来做到这一点。 但我不知道在哪里开始甚至完成这个。

myJPanel.java

import java.awt.*;
import javax.swing.*;

public class myJPanel extends JPanel
{
public myJPanel()
{
    super();
    setBackground(Color.gray);

    setLayout(new BorderLayout());

    myJPanel1 p1 = new myJPanel1();
    add(p1,"North");
    myJPanel2 p2 = new myJPanel2();
    add(p2,"Center");



}
}

myJPanel1.java

import java.awt.*;
import javax.swing.*;

public class myJPanel1 extends JPanel
{

public myJPanel1()
{
    super();
    setBackground(Color.yellow);

    student st1 = new student("Clark","Fontaa",26);
    // the whatsUp of this student has to shown in the other panel

    JButton jl1 = new JButton(st1.getInfo());
    add(jl1);
}
}

myJPanel2.java

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class myJPanel1 extends JPanel implements ActionListener
{

student st1 = new student("Fred","Fonseca",44);
JButton jl1;
public myJPanel1()
{
    super();
    setBackground(Color.yellow);

    jl1 = new JButton(st1.getInfo());
            jl1.addActionListener(this);
    add(jl1);
}

    public void actionPerformed(ActionEvent event){
        Object obj = event.getSource();
        if (obj == jl1){
        // something here
        }
    }

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

在Panel类型的myJPanel1类中添加一个新字段,以便您可以参考Jpanel2,这样您就可以进一步使用它而无需更改Panel 2中的任何内容。请按照以下步骤操作:

  1. 添加名为Panel panel2的新字段,并在构造函数中添加Panel参数,如myJPanel1(JPanel panel) {//set local panel2 instance variable now}
  2. myJPanel课程中,更改以下内容:

    myJPanel1 p1 = new myJPanel1();
    add(p1,"North");
    myJPanel2 p2 = new myJPanel2();
    add(p2,"Center");
    

    myJPanel2 p2 = new myJPanel2();
    add(p2,"Center");
    myJPanel1 p1 = new myJPanel1(p2);//reverse the order of panel instantiation and pass p2 to panel1.
    add(p1,"North");
    
  3. 现在你可以参考p1中的p2,如果你有任何你喜欢的话。

  4. 使用equals方法进行比较,而不是==