java - 在 Java 中,如何在 jframe 组件之间传递变量和列表
问题描述
我创建了一个带有列表对象的简单程序。我还有一个简单的 UI,想将列表不同部分的值添加到文本框架和标签中,但找不到如何传递所需的值。
列表对象已在 UI 的主类中创建(使用 Netbeans 中的 GUI 构建器创建)。
我已尝试访问 jButton 执行操作部分中所需的值,但被告知包 exampleProgram 不存在。
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
jTextField1.setText(exampleProgram.exampleClass1.get(0).number3);
}
public static void main(String args[])
{
ExampleProgram exampleProgram = new ExampleProgram();
exampleProgram.exampleClass1.add(new ExampleClass(5,4,3,2,1));
System.out.println("The example value (which should be 3) is : " + exampleProgram.exampleClass1.get(0).number3);
java.awt.EventQueue.invokeLater(new Runnable()
{
public void run()
{
new ExampleUI().setVisible(true);
}
});
}
当前包中的另外两个文件是 ExampleProgram
package classtest;
import java.util.ArrayList;
import java.util.List;
public class ExampleProgram
{
List<ExampleClass> exampleClass1 = new ArrayList<>();
List<ExampleClass> exampleClass2 = new ArrayList<>();
List<ExampleClass> exampleClass3 = new ArrayList<>();
}
和 ExampleClass
package classtest;
public class ExampleClass
{
int number1;
int number2;
int number3;
int number4;
int number5;
public ExampleClass (int a, int b, int c, int d, int e)
{
number1 = a;
number2 = b;
number3 = c;
number4 = d;
number5 = e;
}
}
更新:
尝试了建议的答案 - 在使用构造函数时有效,但仍然无法访问按钮操作代码中传递的对象。
public class ExampleUI extends javax.swing.JFrame
{
public ExampleUI()
{
initComponents();
}
public ExampleUI(ExampleProgram passedObject)
{
initComponents();
jTextField1.setText(String.valueOf(passedObject.exampleClass1.get(0).number3));
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
jTextField2.setText(String.valueOf(passedObject.exampleClass1.get(0).number3));
}
public static void main(String args[])
{
ExampleProgram exampleProgram = new ExampleProgram();
exampleProgram.exampleClass1.add(new ExampleClass(5,4,3,2,1));
System.out.println("The example value (which should be 3) is : " + exampleProgram.exampleClass1.get(0).number3);
java.awt.EventQueue.invokeLater(new Runnable()
{
public void run()
{
new ExampleUI(exampleProgram).setVisible(true);
}
});
}
}
解决方案
public static void main(String args[])
{
ExampleProgram exampleProgram = new ExampleProgram();
exampleProgram.exampleClass1.add(new ExampleClass(5,4,3,2,1));
System.out.println("The example value (which should be 3) is : " + exampleProgram.exampleClass1.get(0).number3);
java.awt.EventQueue.invokeLater(new Runnable()
{
public void run()
{
new ExampleUI(exampleProgram).setVisible(true);
}
});
}
在 ExampleUI 类的构造函数中传递数据,然后在 ExampleUI 类中访问它。希望这会帮助你。
推荐阅读
- sql-server - 从大量数据中搜索字符串(CSV文件中的数百万条记录)
- reactjs - 反应 Axios 钩子
- django - 每次点击某些网址时,将视图增加 1?
- r - R - 查找连续时间戳中的最大值(此处为秒)
- python - 在 FBA 之后访问 .summary 的值
- ssh - 安装 arch gitlab 并且无法使用 ssh 方法进行 git clone
- c++ - 在 C++ 中返回具有对另一个类对象的引用的对象的有效方法
- swift - 无法将 Dictionary 类型的值分配给 LazyMapCollection
- swift - url 路径中的 Alamofire 变量或参数支持
- mqtt - 在 Artemis 中为 MQTT 设置安全设置