gpt4 book ai didi

java - 变量存储在 session 中?/在 JFrame 之间传递变量

转载 作者:太空宇宙 更新时间:2023-11-04 10:26:39 26 4
gpt4 key购买 nike

我有两个 Jframe,如何将变量 Meno 从第一个 Jframe 传递到第二个框架。我正在考虑将其存储在 Session 中,但不知道它是否有效。

第二帧上的代码如下所示。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
String Meno = login.Meno;
String Prispevok = jTextArea2.getText();

try {
connection = DriverManager.getConnection(login.host + login.databaza, login.username, login.password);
java.sql.Statement st = connection.createStatement();
st.executeUpdate("INSERT INTO history (`Name`, `Post`) " + "VALUES ('"+Meno+"' , '"+Prispevok+"')");
} catch (SQLException err) {
System.out.println(err.getMessage());
}
}

如果我问错了,我很抱歉,但我是 Stackoverflow 的新人。谢谢 friend 们:)

最佳答案

这一行

String Meno = login.Meno; 

让我觉得你有类似的东西

class Login {
public String Meno;
}

你的框架声明如下

class MyFrame {
private Login login;
}

您想要的是让您的 Login 类成为您的应用程序的模型,它将分发更改。这意味着您没有 public 成员,而是 getter/setter 方法。

class Login {
private String meno;
public void setMeno(String n) { this.meno = n; }
public String getMeno() { return meno; }
}

如果您想显示该名称,您可以这样做:

JTextField field = new JTextField(login.getMeno());

然后,由于名称可能会更改,因此您需要一种机制来更新 GUI 组件。这可以使用监听器模式来完成:

interface NameListener {
public void nameChanged(String newName);
}

class Login {
private String meno;
private Collection<NameListener> listeners = new ArrayList<>();
public void addListener(NameListener l) { listeners.add(l); }
public void setMeno(String n) {
meno = n;
for (NameListener l : listeners) { l.nameChanged(n); }
}
}

要在文本字段中启用更新,您可以执行以下操作

JTextField field = new JTextField(login.getMeno());
login.addListener(n -> field.setText(n));

由于您只有一个 Login 实例(您应该使用单例模式),因此另一个框架可以像这样注册为监听器。以下是声明单例 Login 类的方法:

class Login {
private static final Login INSTANCE;
private Login() {}
public Login getInstance() {
if (INSTANCE == null) { INSTANCE = new Login(); }
return INSTANCE;
}

private String meno;
// ...
}

然后您可以在 JFrame 中使用它,如下所示:

class MyFrame {
Login login = Login.getInstance();
// ...
}

关于java - 变量存储在 session 中?/在 JFrame 之间传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50463830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com