我目前在访问和更改另一个类的jTextField文本方面遇到了问题。
我正在构建一个在第一个UI中有两个jTextFields元素的应用程序。 这两个元素用作第二个UI中所选日期的框。
当用户点击jTextField(第一个用户界面)时,它会打开带有日历的第二个用户界面,用户从中选择日期。当用户选择日期并确认日期时,所选日期将作为第一个UI中的文本显示在jTextField中。
我在最后一点遇到了问题。我想从我拥有第二个UI的类中激活jTextField的更新方法(在不同类中的第一个UI中)。
答案 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);
}
}
}
通过上述设置,您可以访问MainGUI
内MyDialog
的任何字段。但正如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);
}