2 回答
TA贡献1775条经验 获得超11个赞
我认为在这种情况下您可以使用Singleton 模式。这种模式应该尽可能少地使用,但在你的情况下(必须从不同类别的应用程序访问的公共信息)你可以使用它(恕我直言)。
但在您的情况下,您也可以使用一种 Swing 功能。
任何 Swing 窗口都有一个根窗格。
JComponent
窗口中的每个布局都可以访问此窗格。JComponent
还可以在地图中存储一些用户数据,称为“客户端属性”。因为JRootPane
扩展JComponent
你可以存储/检索你的令牌是这张地图。
这是一个简单的代码:
public class TokenUtils {
private static final String TOKEN_PROPERTY = "token";
public static Token findToken(JComponent component) {
JRootPane root = component.getRootPane();
if (root != null) {
return Token.class.cast(root.getClientProperty(TOKEN_PROPERTY));
}
return null;
}
public static void putToken(JComponent component, Token token) {
JRootPane root = component.getRootPane();
if (root != null) {
root.putClientProperty(TOKEN_PROPERTY, token);
}
}
}
重要提示:如果您使用多个窗口,则必须将令牌放入每个窗口中。
TA贡献1772条经验 获得超5个赞
将令牌的值传递给父 JPanel 的方法是在您的界面中添加一个方法,如 setToken(int token) 和测验面板中的全局变量
测验面板:
private int token;
@Override
public void setToken(int token){
this.token = token;
}
切换界面:
public void setToken(int token);
登录:
parentView.setToken(token);
比您parentView.setToken(token)在 LoginController 中说的要多。现在将设置 QuizPanel 中的令牌变量。
添加回答
举报