如何从多个jFrame中访问变量?

时间:2016-03-31 16:27:29

标签: java swing variables

我目前正在研究Java Swing中的一个问题,我需要有多个jFrame(设备列表,添加设备,删除设备等)。我需要能够访问所有jFrame中的某些变量。

任何想法都会很棒!谢谢

3 个答案:

答案 0 :(得分:1)

您可以使用公共数据对象来存储需要在所有类中使用的值。

首先,创建一个新类来保存您的数据:

public class DataObject{
    public String value1 = "";
    public String value2 = "";
    public int int1 = 0;
}

其次,定义你的JFrame类是这样的:

public class Frame1 extends JFrame{

    private DataObject data;

    public Frame1(DataObject data){
        this.data = data;
    }


    public void doStuff(){
        // ...do some stuff
        data.value1 = "Some new value";
    }       
}



public class Frame2 extends JFrame{

    private DataObject data;

    public Frame2(DataObject data){
        this.data = data;
    }


    public void whatever(){
        if( data.value1.equals("Some new value") )
            // ...do some stuff
    }       
}

最后,创建JFrame类的新实例,在其构造函数中为它们提供相同的 DataObject实例,如下所示:

DataObject myDataObject = new DataObject();
Frame1 frame1 = new Frame1(myDataObject);
Frame2 frame2 = new Frame2(myDataObject);

答案 1 :(得分:0)

最简单的方法:让你的框架保持对设备容器的引用。

中间方式:主管保持对您的框架的引用,并向其提供数据,并通知它们是否应该可见/移动/更改。

最难的方式:包含设备容器的模型,保存对您的演示者的引用,其中包含对您的框架的引用。模型更新控制框架的演示者。框架向演示者发送信息,并告知模型您的行为。

答案 2 :(得分:-1)

我们假设您有一个名为equipment的班级,其中包含一个名为"hello"的变量,此变量的值为public class frame1{ public static String equipment = "hello"; }

frame2

现在让我们为你的第二帧public class frame2{ } 命名。

frame2

因此,请在equipment中说明您要从frame1输出public class frame2{ System.out.println(frame1.equipment); } 的值。

yourClass.yourVariable

您只需打印yourPackage.yourClass.yourVariable

即可

如果你有一个不同包装的课程,你会打印出来:

k= (cols_of_mat)/2;


for(int i = 0; i<k; i++){
    mat[k][i] = 0; 
    mat[i][k] = 0;

    //if Mat can have even size    
    if(k%2==0){
        mat[k-1][i] = 0; 
        mat[i][k-1] = 0;    
    }
}