Java 在两个Jframe之间发送数据

Java 在两个Jframe之间发送数据,java,swing,user-interface,jframe,Java,Swing,User Interface,Jframe,当我想将数据从一个帧发送到另一个帧时,我遇到了这个问题 我已经有很多次这样做了: public class user_login extends javax.swing.JFrame { public static String id; 然后在下一个J帧中我做了这个 String x = user_login.id); 我知道这是个坏习惯 谁能帮帮我!谢谢事实上,你不应该在2JFrame之间以这种方式交流 提供组件的完整api可能会在两个JFrame之间产生混合责任。 此外,使用静态

当我想将数据从一个帧发送到另一个帧时,我遇到了这个问题

我已经有很多次这样做了:

public class user_login extends javax.swing.JFrame {
public static String id;
然后在下一个J帧中我做了这个

    String x = user_login.id);
我知道这是个坏习惯


谁能帮帮我!谢谢事实上,你不应该在2
JFrame
之间以这种方式交流
提供组件的完整api可能会在两个JFrame之间产生混合责任。
此外,使用静态字段共享数据是一个非常糟糕的主意,因为全局变量通常会在组件和处理之间产生不应该产生的强耦合,并且在修改使用此变量的代码时还会增加副作用风险。

应该只向用户类提供API方面的行为

您可以创建一个接口来定义要从另一个
JFrame
调用的
JFrame
的API。使使用的
JFrame
实现该界面,并使用户
JFrame
具有该界面的引用对象。
首先,您只需从用户
JFrame
与API通信即可。

API:

用户
JFrame

public class UserLoginFrame extends JFrame implements UserLoginAPI{

    private String id;
    ...
   public String getLogin(){
       return id;
   }

}
public class OtherFrame extends JFrame {

    private UserLoginAPI api;

    private OtherFrame(UserLoginAPI userLoginAPI){
        this.api = userLoginAPI;
    }

    public void doSomeProcessing(){
       String loginRetrievedByApi = api.getLogin();
    }

}
使用的
JFrame

public class UserLoginFrame extends JFrame implements UserLoginAPI{

    private String id;
    ...
   public String getLogin(){
       return id;
   }

}
public class OtherFrame extends JFrame {

    private UserLoginAPI api;

    private OtherFrame(UserLoginAPI userLoginAPI){
        this.api = userLoginAPI;
    }

    public void doSomeProcessing(){
       String loginRetrievedByApi = api.getLogin();
    }

}

在各种GUI应用程序中使用
消息总线
非常方便。首先,
static
不是一种交叉通信机制,相反,当某些状态发生变化时,您可以使用模式对话框返回结果或某种模型和/或观察者模式来生成通知。也许,您不应该发布问题,而应该先尝试,看看您能找到什么,尝试一些事情,如果它们不起作用,请发布您尝试过的内容、您想要完成的内容以及其他解决方案不起作用的原因,或许我们可以帮助您进一步了解