从jframe2发送一个字符串到jframe1

时间:2014-04-10 11:31:50

标签: java string swing jframe multiple-instances

我有一个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();
   .....

}

1 个答案:

答案 0 :(得分:0)

有太多方法,

其中一个是使用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给出了一个很好的解释。