如果问题有点含糊,请道歉。基本上,我有两个独立的窗口。一个是主窗口,它将一串数字输入JTextField
。然后我将这些数字分配给一个变量(假设已经声明了所有变量),例如
xxxx = textField.getText();
在我按下按钮后打开的第二个窗口中,我需要在第一个窗口的textField中输入的数字自动显示在第二个窗口的textField中。
为此我使用:
textField_1 = new JFormattedTextField();
textField_1.setEditable(false);
panel_4.add(textField_1);
textField_1.setText(dbMain.xxxx);
System.out.println(dbMain.xxxx);
textField_1.setFont(productFont);
textField_1.setColumns(10);
我似乎无法让这个工作,因为我尝试的所有内容只给了我一个空白的textField,或者如果我尝试在控制台中打印变量,我得到null
。
dbMain
是程序中的主要类,我从中调用xxxx
答案 0 :(得分:0)
如果调用getText()方法并在最开始时将返回值赋给属性,在本例中为xxxx,则在用户输入任何文本之前必须为null。
我建议您为dbMain提供一个方法,并在第二个窗口出现时返回getText()值,如:
(主要课程内)
select null + 'someString'
然后在第二个窗口中调用dbMain.getTextFromTextField()应该返回用户输入的最新值。
答案 1 :(得分:0)
暂且不管2帧是否合适。您想要实现的目标可以通过以下几种方式实现:
MVC(模型视图控制器),您可以将所有数据保存在模型中。因此,您的两个帧都将访问相同的模型(数据)。从一方更新将反映在另一方。
观察者模式。创建一个观察者和一个可观察的界面。让您的框架实现这些接口。当进行任何更改时,它将“自动”通知另一方。
将当前帧的引用传递给另一帧。 (这是最简单的实施方式)
实施例
class WindowOne extends JFrame{
private JFrame windowTwo;
}
class WindowTwo extends JFrame{
private JFrame windowOne;
}