在 Java 中如何在 jframe 组件之间传递变量和列表
In Java how do you pass variables and lists between jframe components
我创建了一个带有列表对象的简单程序。我还有一个简单的 UI,想将列表不同部分的值添加到文本框和标签,但找不到如何传递所需的值。
列表对象已在 UI 的主 class 中创建(使用 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<>();
}
和示例类
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 class 的构造函数中传递数据,然后在 ExampleUI class 中访问它。
希望对您有所帮助。
我创建了一个带有列表对象的简单程序。我还有一个简单的 UI,想将列表不同部分的值添加到文本框和标签,但找不到如何传递所需的值。
列表对象已在 UI 的主 class 中创建(使用 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<>();
}
和示例类
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 class 的构造函数中传递数据,然后在 ExampleUI class 中访问它。 希望对您有所帮助。