2014-04-10 43 views
-2

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

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

这是我的示例代码:

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(); 
    ..... 

} 
+2

你有什么试过?显示你的尝试,然后我们会帮助你:)!没有代码=什么都没有发生< - 这是StackOverflow的golder原则! –

+0

编写一个getter或者让String为public并使用JFrame的References直接访问getter或String。 –

+0

是的!对不起,在这里你可以阅读我的示例代码 – Despotars

回答

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给出了一个很好的解释。

+0

感谢您的回复。一个问题,在代码的最后,在这个句子中:“jframe1.txt1.setText(text);”编译器告诉我这一点:“找不到符号符号:变量txt1位置:JFrame类型的变量jframe1” – Despotars

+0

你知道我该如何解决吗? – Despotars

+1

如果您将运行,您将得到一个空指针,因为jframe1中的'txt1'未初始化,并且此处演示了将'jframe1'中的'txt1'文本发送到'jframe2',并且将显示此文本在'jframe2'的'txtDemo'中....请从java swing的基本教程开始。 –