如何从GUI表单(IntelliJ)中获取数据

时间:2017-07-28 17:04:12

标签: java intellij-idea

我是Java的新手,我使用IntelliJ的GUI Form向导创建一个使用main()方法创建表单的表单。
我可以创建表单,并为提交按钮添加了一个监听器,但我不确定如何将表单值返回到应用程序的其余部分。

因为表单使用main,我只能传入字符串,并且它不会返回任何内容,所以我无法获得对框架的引用,因此我无法创建一个方法来传递对象的引用填充。

2 个答案:

答案 0 :(得分:0)

添加了一个项目来展示这一点。 [Link here]

为了将数据恢复到第一帧,我们需要使用相同的内存引用。 简化解释:

  1. 想象一下,你有一个水桶。
  2. 第一帧告诉第二帧放置数据的存储桶。
  3. 第二帧还不知道数据,但知道放置它的桶。
  4. 用户添加数据并单击“确定”按钮。
  5. 第二帧获取数据并将其放入存储桶中。
  6. 回到第一帧,我们从桶中获取数据。
  7. 在项目中,Bucket是DataObject的实例,它被传递给SecondForm,点击它的按钮后我们将值添加到该存储桶。

    最后,一个WindowFocusListener在我们回到第一帧时更新字段。

    代码不言自明。

    通过功能编程,可以进一步改进代码。 Checkout this branch

答案 1 :(得分:0)

  

因为表单使用main,我只能传入字符串,并且它不会返回任何内容,所以我无法获得对框架的引用,因此我无法创建一个方法来传递对象的引用填充

你应该回到OOP的基础知识。 GUI设计师确实隐藏了这一点,并且需要进行大量重构才能使它们在功能上保持清洁。

您可以创建班级的任何实例。并通过main()

运行

例如。

public class Gui {
    private JFrame frame;
    private JTextField textField;

    public Gui(String title) {
        frame = new JFrame(title);
    }

    public void run() {
        // display Frame, add panels, etc
    }

    public String getDataFromGui() {
        return textField.getText(); // for example
    }

    // other methods

    public static void main(String[] args) {
        Gui g = new Gui("Hello World!");
        g.run();
    }

}