从 JTextFields 发布到数组中

Posted

技术标签:

【中文标题】从 JTextFields 发布到数组中【英文标题】:Posting from JTextFields into array 【发布时间】:2011-08-15 16:07:33 【问题描述】:

好的,所以我已经创建了我的数组并添加了一个动作侦听器,这样当单击名为“提交”的按钮时,我的 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);
            
        );
    

【问题讨论】:

如需尽快获得更好的帮助,请发帖SSCCE。 使用标准 Java 变量命名约定。变量名不应以大写字符开头。 【参考方案1】:

虽然您的 Main 类具有字段,但由于它还管理 GUI,您不想创建 ArrayList&lt;Main&gt;

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

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);

【讨论】:

定居者是什么意思? 您的Main 类如何获取这些字符串?必须有这些set 方法或只是像array.HouseNumber = HouseNumber; 这样的字段 如果我可以向您展示我的整个代码会更好吗?我有点困惑大声笑 是的,这会有所帮助。但如果代码太多(> 150 行),那么为什么不从 paste.org 创建一个馅饼并将链接发布到您的问题中 我已经编辑了显示类中所有代码的主要帖子,如果您能按照正确的方向发送给我,以便将数据传递到数组列表中,我将不胜感激,谢谢前进

以上是关于从 JTextFields 发布到数组中的主要内容,如果未能解决你的问题,请参考以下文章

根据不同的id开头从数据库更改密码

在 java 中使用 JTextfields 将数据更新到 oracle 数据库中的问题

如何将文档侦听器添加到面板内的 JTextFields?

保持 jButton 灰色直到 jTextFields != null

JText::_ 不工作

joomla 2.5 JText在xml文件中不起作用