java - 从 JTextFields 发送到数组

标签 java swing arraylist

好的,所以我已经制作了数组并添加了一个操作监听器,以便当单击名为“提交”的按钮时,我的 JTextFields 中的所有数据都应该输入到 ArrayList 中,尽管这没有发生,但任何关于为什么不这样做的帮助都会是赞赏。下面是执行的操作监听器操作。

public class Main {
    String HouseNumber, StreetName, Town, Postcode, Beds, Price, Type;
    JTextField HouseNumber1, StreetName1, Town1, Postcode1, Beds1, Price1,
            Type1;
    JLabel HouseNumberLabel, StreetNameLabel, TownLabel, PostcodeLabel,
            BedsLabel, PriceLabel, TypeLabel;
    JButton Submit;
    JPanel panel;
    JFrame frame;

    public static void main(String[] args) {
        Main gui = new Main();
        gui.go();
    }

    public void go() {
        frame = new JFrame();
        panel = new JPanel();
        HouseNumberLabel = new JLabel("House Number");
        HouseNumber1 = new JTextField("");
        StreetNameLabel = new JLabel("Street name");
        StreetName1 = new JTextField("");
        TownLabel = new JLabel("Town");
        Town1 = new JTextField("");
        PostcodeLabel = new JLabel("Postcode");
        Postcode1 = new JTextField("");
        BedsLabel = new JLabel("Number of beds");
        Beds1 = new JTextField("");
        PriceLabel = new JLabel("Price (£)");
        Price1 = new JTextField("");
        TypeLabel = new JLabel("Building Type");
        Type1 = new JTextField("");
        Submit = new JButton("Submit");
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        frame.getContentPane().add(panel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);
        frame.setVisible(true);

        // Add contents to JFrame and JPanel
        panel.add(HouseNumberLabel);
        panel.add(HouseNumber1);
        panel.add(StreetNameLabel);
        panel.add(StreetName1);
        panel.add(TownLabel);
        panel.add(Town1);
        panel.add(PostcodeLabel);
        panel.add(Postcode1);
        panel.add(BedsLabel);
        panel.add(Beds1);
        panel.add(PriceLabel);
        panel.add(Price1);
        panel.add(TypeLabel);
        panel.add(Type1);
        panel.add(Submit);
        frame.pack();
        frame.show();

        final ArrayList<Main> p = new ArrayList<Main>();
        Submit.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                Main array = new Main();
                HouseNumber = HouseNumber1.getText();
                StreetName = StreetName1.getText();
                Town = Town1.getText();
                Postcode = Postcode1.getText();
                p.add(array);
            }
        });
    }
}

最佳答案

尽管您的 Main 类具有字段,但由于它还管理 GUI,因此您不想创建 ArrayList<Main>

如果您只需要收集所有字符串,那么您可以创建

ArrayList<String> houseDetails = new ArrayList<String>();

houseDetails.add(HouseNumber);
houseDetails.add(StreenName);
houseDetails.add(Town);
houseDetails.add(Postcode);

但更简洁的做法是创建一个类来管理这些

class House
{
    private String houseNumber;
    private String streetName;
    private String town;
    private String postcode;

    public String getHouseNumber() {
        return houseNumber;
    }
    public void setHouseNumber(String houseNumber) {
        this.houseNumber = houseNumber;
    }
    public String getStreetName() {
        return streetName;
    }
    public void setStreetName(String streetName) {
        this.streetName = streetName;
    }
    public String getTown() {
        return town;
    }
    public void setTown(String town) {
        this.town = town;
    }
    public String getPostcode() {
        return postcode;
    }
    public void setPostcode(String postcode) {
        this.postcode = postcode;
    }
}

然后创建一个House并设置所有值。

final ArrayList<House> houses = new ArrayList<House>();

并在您的actionPerformed事件中

House house = new House();
house.setHouseNumber(HouseNumber);
...

houses.add(house);

关于java - 从 JTextFields 发送到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5835303/

相关文章:

Java 用对象填充 ArrayList?

java - 表达式的类型必须是数组类型,但它解析为 ArrayList<Integer>

java - 正则表达式 : search strings extending on exact number of lines

java - 我可以在 Eclipse 中创建包内文件夹吗?

java - 需要初始化JFrame

java - 单击后更改按钮文本,然后使用 JAVA ActionEvent 再次单击后恢复更改

java - 扫描仪跳过数字 Java

java - 每个不可变类都应该是最终的吗?

java - 滚动条用 VERTICAL_WRAP 覆盖 JList 的最后一行

java - 如何将 ArrayList 放入 bundle