gpt4 book ai didi

java - 无法从另一个 JFrame 在 JTextField 中 setText()

转载 作者:行者123 更新时间:2023-12-01 13:29:42 24 4
gpt4 key购买 nike

我有两个 JFrame,分别命名为第一个和第二个。两个框架都有 getText() 和 setText() 的 jtextfields。我能够从第一个 JFrame 到第二个 JFrame 设置文本,但无法从第二个 JFrame 到第一个设置文本。

在第一帧和第二帧中,我将所有 JTextFields public static

第一个.java

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
second sec = new second();
sec.jTextField1.setText(this.jTextField1.getText()); // this works
sec.jTextField2.setText(this.jTextField2.getText());
sec.setVisible(true);

public static javax.swing.JTextField jTextField1;
public static javax.swing.JTextField jTextField2;
private javax.swing.JButton jButton1;

第二个.java

   private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
first f = new first();
f.jTextField1.setText(this.jTextField3.getText()); //not working
f.jTextField2.setText(this.jTextField4.getText());
}
public static javax.swing.JTextField jTextField1;
public static javax.swing.JTextField jTextField2;
public static javax.swing.JTextField jTextField3;
public static javax.swing.JTextField jTextField4;
private javax.swing.JButton jButton1;

单击第二帧按钮时,第一帧应该更新。我不想再次打开第一帧。

最佳答案

在开始之前,请先查看 The Use of Multiple JFrames, Good/Bad Practice?`

"on click of second frames button first frame should get updated. I don't want open first frame again."

它不起作用,因为您正在创建一个新的 JFrame(first)。当然,它会打开一个新的框架。不要创建新框架,而是传递相同的框架作为引用。

我将给您一个使用 JDialog 而不是 JFrame 的示例。如果您阅读上面的链接后仍然决定 JFrame 是您想要的,则可以将相同的代码实现到 JFrame 中。它们基本上具有相同的构造。

基本上我所说的传递引用的意思是这样的。将 JFrame 传递给 JDialog 的构造函数。这样,您传递给它的 JFrame 将与引用的 JFrame 相同。

public class MyDialog extends JDialog {
private First frame;
private JTextField thisTextField;

public MyDilaog(final First frame, boolean modal) {
super(frame, modal);
this.frame = frame;

thisTextFiled = new JTextField(20);
}
}

Int你的First类就像这样创建它

MyDialog dialog = new MyDialog(First.this, true);

现在您已经有了对该框架的引用。您还需要 JFrame 类中的 getter 来从 JFrame 类访问 JTextField。然后您可以设置其文本,因为它也被引用。所以你可以从 JDialog

中执行类似的操作
public void actionPerformed(ActionEvent e) {
String text = thisTextField.getText();

JTextField fieldFromFrame = frame.getTextField();
fieldFromFrame.setText(text):
}
<小时/>

此外,您需要使用 Java 命名约定。类名使用大写字母。所以First不是first

关于java - 无法从另一个 JFrame 在 JTextField 中 setText(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21643817/

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