我正面临这个问题,我似乎无法将数据从子框架传递到父框架。但是,我能够将数据从父框架传递到子框架。我一直在寻找解决方案,但无济于事。问题是,是否有可能将数据从孩子传递给父母?
我正在挥杆创建自己的日期选择器,当用户单击某个日期按钮后,它将反弹回前一帧并输入为标签。但是,我试图从基本和 我做了一个简单的例子,下面将解释从父母到孩子的数据解析。但是从孩子回到父母的另一方向似乎是不可能的。
public class dataparse {
public void mainFrame() {
JFrame frame = new JFrame(" Parent Frame ");
JPanel center = new JPanel();
JButton enter = new JButton("Enter");
JTextField text = new JTextField();
frame.setSize(400, 400);
center.setLayout(new GridLayout(0, 1));
center.add(text);
center.add(enter);
frame.add(center, BorderLayout.CENTER);
enter.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
String value = text.getText();
getData(value);
}
});
frame.setVisible(true);
}
public void getData(String getData) {
JFrame frame = new JFrame(" Child Frame ");
JPanel center = new JPanel();
JButton enter = new JButton("Save");
JTextField data = new JTextField("2");
JLabel result = new JLabel(getData);
frame.setSize(400, 400);
center.setLayout(new GridLayout(0, 1));
center.add(result);
center.add(enter);
frame.add(center, BorderLayout.CENTER);
frame.setVisible(true);
}
}
代码如前所述运行正常。 如果在方案中,“子框架”具有textField且在用户单击后保存。如何将其应用回父框架?
先谢谢了。 :)
答案 0 :(得分:0)
您可以将JTextFrame
发送到新框架,然后通过新框架的保存按钮actionPerfromed
的操作来设置此框架的文本值,如下所示:
public void mainFrame() {
JFrame frame = new JFrame(" Parent Frame ");
JPanel center = new JPanel();
JButton enter = new JButton("Enter");
JTextField text = new JTextField();
frame.setSize(400, 400);
center.setLayout(new GridLayout(0, 1));
center.add(text);
center.add(enter);
frame.add(center, BorderLayout.CENTER);
enter.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
String value = text.getText();
getData(text);
}
});
frame.setVisible(true);
}
public void getData(JTextField text) {
JFrame frame = new JFrame(" Child Frame ");
JPanel center = new JPanel();
JButton save = new JButton("Save");
JTextField data = new JTextField(text.getText());
frame.setSize(400, 400);
center.setLayout(new GridLayout(0, 1));
center.add(data);
center.add(save);
frame.add(center, BorderLayout.CENTER);
save.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
text.setText(data.getText());
}
});
frame.setVisible(true);
}
请注意,可以将此代码编写得更精美,而不用传递JTextField引用。我只是放置了代码来激发您的灵感,但是您可以从multi frame java application
快速浏览一下,然后尝试更改代码