在Swing中将数据从子级解析为父级

时间:2019-01-29 07:18:49

标签: java swing

我正面临这个问题,我似乎无法将数据从子框架传递到父框架。但是,我能够将数据从父框架传递到子框架。我一直在寻找解决方案,但无济于事。问题是,是否有可能将数据从孩子传递给父母?

我正在挥杆创建自己的日期选择器,当用户单击某个日期按钮后,它将反弹回前一帧并输入为标签。但是,我试图从基本和 我做了一个简单的例子,下面将解释从父母到孩子的数据解析。但是从孩子回到父母的另一方向似乎是不可能的。

enter image description here

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且在用户单击后保存。如何将其应用回父框架?

先谢谢了。 :)

1 个答案:

答案 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

快速浏览一下,然后尝试更改代码