我目前正在研究Java Swing中的一个问题,我需要有多个jFrame(设备列表,添加设备,删除设备等)。我需要能够访问所有jFrame中的某些变量。
任何想法都会很棒!谢谢
答案 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;
}
}