从另一个类访问和更改jTextField中的文本

时间:2013-12-28 15:23:39

标签: java swing class

我目前在访问和更改另一个类的jTextField文本方面遇到了问题。

我正在构建一个在第一个UI中有两个jTextFields元素的应用程序。 这两个元素用作第二个UI中所选日期的框。

当用户点击jTextField(第一个用户界面)时,它会打开带有日历的第二个用户界面,用户从中选择日期。当用户选择日期并确认日期时,所选日期将作为第一个UI中的文本显示在jTextField中。

我在最后一点遇到了问题。我想从我拥有第二个UI的类中激活jTextField的更新方法(在不同类中的第一个UI中)。

2 个答案:

答案 0 :(得分:1)

如果您的第二帧不是太多代码,您可以将它设为模态JDialog而不是第二个GUI,并将其作为主GUI类的内部类

public class MainGUI extends JFrame {

    private MyDialog dialog;

    public MainGIU(){
        dialog = new MyDialog(this, true);

        // some action sets the dialog visible
    }

    private class MyDialog extends JDialog {
        public MyDialog(Frame frame, boolean modal){
             super(frame, modal);
        }
    }
}

通过上述设置,您可以访问MainGUIMyDialog的任何字段。但正如Vin243所指出的,这个 是何时使用MVC模式的完美示例

答案 1 :(得分:0)

MVC模式非常适合。 否则,您可以在第二个类的构造函数中添加一个带有field对象的参数。更新应该有效。示例(我用Java编写了很长时间,所以我可能会把错误的东西放在一起):

public MyFrame1() {
   //...
   JTextField dateField = new JTextField();
   //...
   dateField.addClickListener(new EventListener(){
        new MyFrame2(dateField);
   });
}


public MyFrame2(dateField) {
    //...
    // When updating :
         dateField.setText(text);
}