Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从另一个类访问主类中的变量_Java - Fatal编程技术网

Java 如何从另一个类访问主类中的变量

Java 如何从另一个类访问主类中的变量,java,Java,我正在使用我的主类作为我正在处理的程序的UI,在另一个类中,我有一个循环在运行,直到它失去网络连接。 所述领域: lastCrashField = new JLabel("",SwingConstants.CENTER); lastCrashField.setBounds(80,180,200,30); lastCrashField.setBorder(blackLine); totalCrashField = new JLabel(""

我正在使用我的主类作为我正在处理的程序的UI,在另一个类中,我有一个循环在运行,直到它失去网络连接。 所述领域:

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方法来正确处理它,而不是使用其他对象。不过,感谢您提供的有用资料!