Java 将一个Jframe中的变量集从一个传递到另一个
我有一个名为User的JFrame,其中声明了一个名为id的变量,并根据某些条件将其设置为某个值 我需要在第二个名为output的JFrame中使用这个变量 这是我的密码Java 将一个Jframe中的变量集从一个传递到另一个,java,swing,class,jframe,Java,Swing,Class,Jframe,我有一个名为User的JFrame,其中声明了一个名为id的变量,并根据某些条件将其设置为某个值 我需要在第二个名为output的JFrame中使用这个变量 这是我的密码 class InputScreen extends javax.swing.JFrame { public int id = 0; private void submitButtonActionPerformed(java.awt.event.ActionEvent evt) {
class InputScreen extends javax.swing.JFrame {
public int id = 0;
private void submitButtonActionPerformed(java.awt.event.ActionEvent evt) {
if (condition){
id = 1;
System.out.println(id);
}
elseif (condition){
id = 2;
System.out.println(id);
}
elseif (condition){
id = 3;
System.out.println(id);
}
else{
System.exit(0);
}
我在帧输出中使用了构造函数,但它似乎不起作用
public class Output extends javax.swing.JFrame {
int rule;
public Output(int Id){
rule = Id;
initComponents();
}
public Output() {
initComponents();
conn = MySqlConnect.ConnectDB();
}
更新代码
帧输入
class InputScreen extends javax.swing.JFrame {
public int id = 0;
public int getID(){
return input_rule_id;
}
private void submitButtonActionPerformed(java.awt.event.ActionEvent evt) {
if (condition){
id = 1;
System.out.println(id);
}
elseif (condition){
id = 2;
System.out.println(id);
}
elseif (condition){
id = 3;
System.out.println(id);
}
表单输出
private void formWindowActivated(java.awt.event.WindowEvent evt) {
Input InSc = new Input();
InSc.getId();
}
所有基本数据类型都将通过值传递。使用对象包装器通过引用传递值。例如原子整数
class InputScreen extends javax.swing.JFrame {
private AtomicInteger id = new AtomicInteger(0);
private void submitButtonActionPerformed(java.awt.event.ActionEvent evt) {
if (condition){
id.set(1);
System.out.println(id);
}
else if (condition){
id.set(2);
System.out.println(id);
}
else if (condition){
id.set(3);
System.out.println(id);
}
else{
System.exit(0);
}
}
public class Output extends javax.swing.JFrame {
AtomicInteger rule;
public Output(AtomicInteger Id){
rule = Id;
initComponents();
}
public Output() {
initComponents();
conn = MySqlConnect.ConnectDB();
}
}
所有基本数据类型都将通过值传递。使用对象包装器通过引用传递值。例如原子整数
class InputScreen extends javax.swing.JFrame {
private AtomicInteger id = new AtomicInteger(0);
private void submitButtonActionPerformed(java.awt.event.ActionEvent evt) {
if (condition){
id.set(1);
System.out.println(id);
}
else if (condition){
id.set(2);
System.out.println(id);
}
else if (condition){
id.set(3);
System.out.println(id);
}
else{
System.exit(0);
}
}
public class Output extends javax.swing.JFrame {
AtomicInteger rule;
public Output(AtomicInteger Id){
rule = Id;
initComponents();
}
public Output() {
initComponents();
conn = MySqlConnect.ConnectDB();
}
}
您可以使用getter和setter。在要传递id变量的帧中定义一个getter方法。乙二醇
public int getID(){
return id;
}
在另一个框架中,您可以使用此方法返回结果<代码>int id=getID()代码>
解决这个问题的另一个方法是使变量globe和static可以在另一个框架中导入并使用 您可以使用getter和setter。在要传递id变量的帧中定义一个getter方法。乙二醇
public int getID(){
return id;
}
在另一个框架中,您可以使用此方法返回结果<代码>int id=getID()代码>
解决这个问题的另一个方法是使变量globe和static可以在另一个框架中导入并使用 参数传递 最简单的方法是将输出作为参数传递给InputScreen。然后,您可以在InputScreen.SubmitButtoActionPerformed()逻辑中调用Output.setId(id)方法。然而,当应用程序增长时,这种方式有点问题 观察者模式 更好的方法是将IdChangedListener作为观察者模式的一部分实现为已实现的ActionListener的代理。当您的ActionListener启动时,您将所有注册为观察员的IDChangeListener调用到InputScreen。在输出中,提供方法setId(id)以提供访问。在实例化两个JFrame的地方,您实现了一个IdChangeListener,将它添加到InputScreen,当它触发时,您调用Output.setId() 不管怎么说,您只需要一个事件就可以看到大量的工作(和代码)。此外,这种方法在应用程序大小和动态方面也有其局限性 内存中事件总线 最新的方法是使用内存中的事件总线。这消除了UI中组件的硬连接,并减少了代码大小。但是,它限制了组件的重用,因为它们会自动对某些事件做出反应。如果你不止一次拥有它们呢?听不同的节目
您需要考虑在哪里使用哪种方法。我建议使用EventBus在应用程序的具体组件之间进行事件传播。在中等尺寸的组件上使用观察者模式,而在小尺寸或非常静态的组件上使用参数传递。参数传递 最简单的方法是将输出作为参数传递给InputScreen。然后,您可以在InputScreen.SubmitButtoActionPerformed()逻辑中调用Output.setId(id)方法。然而,当应用程序增长时,这种方式有点问题 观察者模式 更好的方法是将IdChangedListener作为观察者模式的一部分实现为已实现的ActionListener的代理。当您的ActionListener启动时,您将所有注册为观察员的IDChangeListener调用到InputScreen。在输出中,提供方法setId(id)以提供访问。在实例化两个JFrame的地方,您实现了一个IdChangeListener,将它添加到InputScreen,当它触发时,您调用Output.setId() 不管怎么说,您只需要一个事件就可以看到大量的工作(和代码)。此外,这种方法在应用程序大小和动态方面也有其局限性 内存中事件总线 最新的方法是使用内存中的事件总线。这消除了UI中组件的硬连接,并减少了代码大小。但是,它限制了组件的重用,因为它们会自动对某些事件做出反应。如果你不止一次拥有它们呢?听不同的节目
您需要考虑在哪里使用哪种方法。我建议使用EventBus在应用程序的具体组件之间进行事件传播。在中等尺寸的组件上使用观察者模式,而在小尺寸或非常静态的组件上使用参数传递。1)要更快获得更好的帮助,请发布或。2) 请参阅..1)的可能副本以获得更好的帮助,请尽快发布或。2) 查看的可能重复项。我尝试了此操作,但输出帧中的值似乎只有null。如果不查看完整的代码,我将无法帮助您。我现在已更新了代码。请你帮我整理一下,这不是完整的密码。我认为,你需要用一本书开始学习Java。因此,您可以提出问题,我们可以理解。我尝试了这一点,但输出帧中的值似乎只有null。如果不查看完整的代码,我将无法帮助您。我现在已更新了代码。请你帮我整理一下,这不是完整的密码。我认为,你需要用一本书开始学习Java。所以你可以问问题,我们可以理解。