【问题标题】:Send a string from jframe2 to jframe1将字符串从 jframe2 发送到 jframe1
【发布时间】:2014-04-10 11:31:50
【问题描述】:

我有一个jFrame1,两个JTextField。其中一个文本字段应该从我的jFrame2 加载数据。在我的jFrame1 中,我有一个打开jFrame2 的按钮。当您按下按钮打开jFrame2 时,您可以看到4 个按钮,当您按下其中一个按钮时,jframe2 应该关闭并在我的一个文本字段中加载一个字符串。

有人知道我该怎么做吗?因为我已经尝试了几个代码并且没有离开我。

这是我的示例代码:

public class jFrame1 extends javax.swing.JFrame{

   public JTextField txt1; 
   private JButton btn1;

   btn1.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
         jFrame2 jframe2 = new jFrame2(this);
         jframe2.setVisible(true);
      }
   });


   .....

}


public class jFrame2 extends javax.swing.JFrame{

   private JFrame jframe1;

   public jFrame2(JFrame jframe){
      this.jframe1 = jframe;
   }

   ...
   jframe1.txt1.setText("Hallo!");
   this.dispose();
   .....

}

【问题讨论】:

  • 你试过什么?显示您尝试过的内容,然后我们将为您提供帮助:)!没有代码 = 什么也没发生
  • 写一个 getter 或者让 String 公开,并使用 JFrame 的 References 直接访问 getter 或 String。
  • 是的!对不起,你可以在这里阅读我的示例代码
  • 1) 见The Use of Multiple JFrames, Good/Bad Practice? 这听起来像是模态JDialogJOptionPane 的情况。 2) 为了尽快获得更好的帮助,请发布MCVE(最小完整且可验证的示例)。
  • 我为此推荐 JOptionPane。对话框用于更复杂的交互。如果您只想要一个文本,JOptionPane 是您的最佳选择。

标签: java string swing jframe multiple-instances


【解决方案1】:

方法太多了,

其中之一是使用String 参数为您的框架提供构造函数并传递值。

例如,

public class jFrame1 extends javax.swing.JFrame{

   public JTextField txt1; // Hope you have initialized this somewhere in your code else you will face a NPE.
   private JButton btn1;

   btn1.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
         jFrame2 jframe2 = new jFrame2(this, txt1.getText());
         jframe2.setVisible(true);
      }
   });


   .....

}


public class jFrame2 extends javax.swing.JFrame{

   private JFrame jframe1;
   private String text;
   public JTextField txtDemo; 

   public jFrame2(JFrame jframe){
      this.jframe1 = jframe;
   }

   public jFrame2(JFrame jframe, String text){
      this.jframe1 = jframe;
      txtDemo = new JTextField(text);
   }

   ...

}

您也可以在SO question 中找到答案。

并在实施此之前参考The Use of Multiple JFrames, Good/Bad Practice? 上的答案,对JFrame 和Swing 给出了很好的解释。

【讨论】:

  • 感谢您的回复。一个问题,在最后的代码中,在这句话中:“jframe1.txt1.setText(text);”编译器告诉我:“找不到符号符号:变量 txt1 位置:JFrame 类型的变量 jframe1”
  • 如果你会运行,你也会得到一个空指针,因为 jframe1 中的txt1 没有初始化,这里是发送txt1 的文本的演示,它在jframe1 到@987654329 @ 并且此文本将显示在jframe2txtDemo 中......请从java swing 基础教程开始。
  • 这是一种编码技巧,以解决设计中的缺陷,可以使用模态对话框轻松解决。
猜你喜欢
  • 1970-01-01
  • 2014-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多