web应用中有个session对象可以保存全局变量, 请问一下j2se桌面应用中如何设置一个全局变量,供其他的JFrame直接获取
业务描述:用户登入,记录用户登入信息,输入用户名后,我加载了一个系统托盘,没有显示FrmMain窗口,可以通过点击右下角图标进行显示。我现在的实现方式:
1.登入窗口JFrame(FrmLogin)
FrmMain frmMain = new FrmMain();
frmMain.setUserInfo(identifiedResults);2.登入后界面JFrame(FrmMain)
public class FrmMain extends javax.swing.JFrame { private String userInfo; public void setUserInfo(String userInfo) {
this.userInfo = userInfo;
} public FrmMain() {
initComponents();
this.setTitle("用户中心");
this.setResizable(false);
System.out.println("user info :" + userInfo); // 为什么这里没有获取数据
if (userInfo != null) {
String[] userInfoArr = userInfo.split("~");
txUserName.setText(userInfoArr[2]);
txDepName.setText(userInfoArr[4]);
} addSysTray(); // 加载系统托盘
}加载系统托盘程序部分代码:
.....
trayIcon.addMouseListener(new MouseAdapter() { @Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
setVisible(true);
System.out.println("user info :" + userInfo); // 这个地方有数据,不知道为什么
if (userInfo != null) {
String[] userInfoArr = userInfo.split("~");
txUserName.setText(userInfoArr[2]);
txDepName.setText(userInfoArr[4]);
}
}
}
});不知道这样的方法可行,总感觉有点变扭,不是特别的方便, 因为我有很多的JFrame都会用到这个用户信息变量, 请大侠指点一下, 这个如何实现
业务描述:用户登入,记录用户登入信息,输入用户名后,我加载了一个系统托盘,没有显示FrmMain窗口,可以通过点击右下角图标进行显示。我现在的实现方式:
1.登入窗口JFrame(FrmLogin)
FrmMain frmMain = new FrmMain();
frmMain.setUserInfo(identifiedResults);2.登入后界面JFrame(FrmMain)
public class FrmMain extends javax.swing.JFrame { private String userInfo; public void setUserInfo(String userInfo) {
this.userInfo = userInfo;
} public FrmMain() {
initComponents();
this.setTitle("用户中心");
this.setResizable(false);
System.out.println("user info :" + userInfo); // 为什么这里没有获取数据
if (userInfo != null) {
String[] userInfoArr = userInfo.split("~");
txUserName.setText(userInfoArr[2]);
txDepName.setText(userInfoArr[4]);
} addSysTray(); // 加载系统托盘
}加载系统托盘程序部分代码:
.....
trayIcon.addMouseListener(new MouseAdapter() { @Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
setVisible(true);
System.out.println("user info :" + userInfo); // 这个地方有数据,不知道为什么
if (userInfo != null) {
String[] userInfoArr = userInfo.split("~");
txUserName.setText(userInfoArr[2]);
txDepName.setText(userInfoArr[4]);
}
}
}
});不知道这样的方法可行,总感觉有点变扭,不是特别的方便, 因为我有很多的JFrame都会用到这个用户信息变量, 请大侠指点一下, 这个如何实现
想改变的时候就set下 想获取的时候就get下
class MyClass {
public static int myVararible = 10;
}使用: int x = MyClass.myVararible;
* 全局类
* @author guolw
*
*/
public final class Global {
/**
* 存放多个登录用户,泛型可以使Map<String, Userinfo>
*/
public static final Map<String, String> LOGIN_USERS = new HashMap<>();
private Global(){
}
}
/**
* 登录
* @param userinfo
*/
public void login(String userinfo){
// 将登录的用户存放进去
Global.LOGIN_USERS.put("userName", "UserEntity");
}
public String getLoginUserByName(String name){
return Global.LOGIN_USERS.get(name);
}上面将Global类中的LoginUsers设计为一个public类型的,这样外界就可以随意拿到这个Map集合,然后执行Map所以的操作,另外一种设计是,将其private化,然后提供访问接口。
谢谢楼主的分享