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