Java 如何从另一个类访问主类中的变量
我正在使用我的主类作为我正在处理的程序的UI,在另一个类中,我有一个循环在运行,直到它失去网络连接。 所述领域:Java 如何从另一个类访问主类中的变量,java,Java,我正在使用我的主类作为我正在处理的程序的UI,在另一个类中,我有一个循环在运行,直到它失去网络连接。 所述领域: lastCrashField = new JLabel("",SwingConstants.CENTER); lastCrashField.setBounds(80,180,200,30); lastCrashField.setBorder(blackLine); totalCrashField = new JLabel(""
lastCrashField = new JLabel("",SwingConstants.CENTER);
lastCrashField.setBounds(80,180,200,30);
lastCrashField.setBorder(blackLine);
totalCrashField = new JLabel("",SwingConstants.CENTER);
totalCrashField.setBounds(80,240,200,30);
totalCrashField.setBorder(blackLine);
我如何从另一个类更新UI中的这两个字段,已经四处查看了一段时间,到目前为止,我一直在空白思考,也许我需要重新思考从基本类处理这些字段的方式…你说:
如何从另一个类访问主类中的变量
要直接回答您的问题,请选择以下方法之一:
- 将对每个字段的引用作为参数传递给另一个类的对象上的方法
- 使实例成为两个JLabel小部件的成员。将它们标记为non-
,以便其他类的对象直接访问private
公共类冲突表单扩展…
{
//成员字段
私人JLabel lastCrashField、totalCrashField;
//在构造函数中,填充这两个字段引用。
…
//将对这两个字段的引用传递给逻辑方法,以生成新数据。
无效
{
SomeHelperObject SomeHelperObject=新建SomeHelperObject();
someHelperObject.updateCrashFields(lastCrashField,totalCrashField);
}
}
公共类SomeHelper类
{
//向JLabel对象传递两个引用。
void someLogic(JLabel lastscrash、JLabel totalCrash)
{
lastCrash.setText(…);
totalCrash.setText(…);
}
}
第二个项目符号的代码
公共类冲突表单扩展…
{
//成员字段
public JLabel lastCrashField,totalCrashField;//public,非private。
//在构造函数中,填充这两个字段引用。
…
无效
{
SomeHelperObject SomeHelperObject=new SomeHelperObject(this);//将Swing窗体(或控制器)的实例传递给helper类构造函数。
someHelperObject.UpdateCashFields();
}
}
公共类SomeHelper类
{
//成员字段
碰撞形式;
//正在接收此类构造函数中的'CollisionForm'实例。
SomeHelperClass(碰撞形式碰撞形式)
{
this.form=冲突形式;
}
void someLogic()
{
这个.form.lastCrashField.setText(…);
这个.form.totalCrashField.setText(…);
}
}
但是我不推荐使用这些方法中的任何一种来使用Swing小部件。继续读下去
你说:
UI中来自不同类的2个字段
通常,您不应该让其他类直接操作GUI小部件
最好让包含/管理小部件的对象(GUI布局对象或控制器对象)请求其他类执行工作。任何结果数据都应该返回到布局/控制器,然后更新小部件
公共类冲突表单扩展…
{
//成员字段
私人JLabel lastCrashField、totalCrashField;
//在构造函数中,填充这两个字段引用。
…
无效
{
SomeHelperObject SomeHelperObject=new SomeHelperObject();//不传递任何关于小部件的信息。这个类仍然很幸运地不知道任何与Swing相关的信息。
ListfreshCrashData=someHelperObject.someLogic();
this.lastCrashField.setText(freshCrashData.get(0));
this.totalCrashField.setText(freshCrashData.get(1));
}
}
//这个版本的'SomeHelperClass'类对Swing和表单上的小部件一无所知。
公共类SomeHelper类
{
ListsomeLogic()//实现这一点的一种常见方法是使用接口和/或回调。你在说什么?在写了这个线程并适应了这一天之后,我实际上想到了前两个选项(显然),但出于某种原因,我无法在main方法之外编写jlabel(查看您的示例,这是可能的,现在我也在管理,所以不确定我昨晚尝试了什么)。现在我可以做到,我想我将在UI类中使用适当的Set方法来正确处理它,而不是使用其他对象。不过,感谢您提供的有用资料!