为什么我无法在两个JFrame之间传输数据?

时间:2018-01-24 13:48:15

标签: java swing jframe jtextfield

我在项目中有两个JFrame。  在JFrame1我有一个JTextFieldJFrame1_JTextField)和一个按钮。在另一个JFrame我只有一个JTextFieldJFrame2_JTextField)。

当我运行程序并在JFrame1_TextField中输入文本并单击按钮时,我希望文本显示在JFrame2_JTextField中。但是第二个JFrame中没有显示任何文字。

我没有收到任何错误,但我也没有得到预期的输出。

预期输出:我希望在点击按钮后将JFrame1_JtextField中输入的文字设置为JFrame2_JTextField

private void ButtonActionPerformed(java.awt.event.ActionEvent evt) { 
    new JFrame2().JFrame2_JTextField.setText(this.JFrame1_JTextField.getText());
    new JFrame2().setVisible(true);
}                           

1 个答案:

答案 0 :(得分:1)

您的代码会创建两个新的JFrame2

new JFrame2().JFrame2_JTextField.setText(this.JFrame1_JTextField.getText());

在这里,您创建了一个新的JFrame2并设置了文本内容。

new JFrame2().setVisible(true);

现在您创建另一个新的JFrame2并显示它。文本内容已放在您之前创建的JFrame2中,因此显然第二个JFrame2无法显示它。

将JFrame2存储在变量中并使用:

JFrame2 jframe2 = new JFrame2();
jframe2.JFrame2_JTextField.setText(this.JFrame1_JTextField.getText());
jframe2.setVisible(true);

通过公共变量进行的沟通本身就存在问题,但这不是问题的范围。不过,请考虑在JFrame类中编写可用于数据交换的公共方法。