我有两个Jframe,如何将Variable 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中是新的。谢谢各位朋友:)
答案 0 :(得分:0)
您可以创建一个自定义类(扩展JFrame),如果需要,可以使用public void setMeno(String meno)
和public String getMeno()
之类的方法,以便将变量传递给JFrame。我不确定这是不是你的意思,因为你没有提供很多细节。
基本示例:
public class JFrame2 extends JFrame{
private String meno;
public void setMeno(String meno)
{
this.meno = meno;
}
}
如果你有这样的类,你可以通过在你创建的对象(JFrame2的实例)上调用setMeno(meno)
来轻松地在第二个JFrame中设置meno。
答案 1 :(得分:0)
解决方案1: 创建一个类名称为常量并存储字符串meno。然后随时随地使用。
public Class Constant{
public static String meno="";
}
然后将值设置为JFrame1中的meno,如
Constant.meno="SomeValue";
然后从JFrame 2中的常量中检索值
String meno=Constant.meno;
解决方案2: 在构造函数中传递值meno,如
Frame2 frame=new Frame2(Meno);
并检索JFrame2中的meno值,如
String meno;
public Frame2(String _meno){
meno=_meno;
}
希望这对您有所帮助,如果您需要进一步的帮助,请在下面发表评论。
答案 2 :(得分:0)
这一行
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();
// ...
}