Java 向ArrayList添加JTextField的GUI

Java 向ArrayList添加JTextField的GUI,java,swing,user-interface,arraylist,Java,Swing,User Interface,Arraylist,我删除了我的另一篇帖子,因为有人告诉我这篇帖子不具体,我想问一个更具体的问题,下面是 该程序应该接收联系人信息(姓名、电话、电子邮件),然后单击“添加”按钮将创建联系人对象并转到ArrayList。然后,单击查看按钮时,您将看到添加到其中的所有联系人 我一直在看关于如何使用GUI的教程和书籍,并且能够创建一个包含所有必要内容的窗口来添加联系人信息 我的问题:我的难题是如何将这些信息添加到数组列表中 在我弄清楚如何添加信息后,我将研究如何在单击查看按钮时查看它 如果您能给我任何帮助或建议,我将不胜

我删除了我的另一篇帖子,因为有人告诉我这篇帖子不具体,我想问一个更具体的问题,下面是

该程序应该接收联系人信息(姓名、电话、电子邮件),然后单击“添加”按钮将创建联系人对象并转到ArrayList。然后,单击查看按钮时,您将看到添加到其中的所有联系人

我一直在看关于如何使用GUI的教程和书籍,并且能够创建一个包含所有必要内容的窗口来添加联系人信息

我的问题:我的难题是如何将这些信息添加到数组列表中

在我弄清楚如何添加信息后,我将研究如何在单击查看按钮时查看它

如果您能给我任何帮助或建议,我将不胜感激

public class InputForm extends JFrame {
    private static JPanel panel;
    private static JLabel firstNameLabel;
    private static JLabel lastNameLabel;
    private static JLabel phoneNumLabel;
    private static JLabel emailLabel;
    private static JLabel contactMessage;
    private static JTextField  firstNameInput;
    private static JTextField  lastNameInput;
    private static JTextField  phoneInput;
    private static JTextField  emailInput;
    private static JButton addButton;
    private static JButton viewButton;
    private String fn;
    private String ln;
    private String ph;
    private String em;
    private List<String> list = new ArrayList<String>();

public InputForm() {
    int windowWidth = 650;
    int windowHeight = 550;

    //Window title
    setTitle("CONTACT FORM");
    //Set window size.
    setSize(windowWidth, windowHeight);
    //Exit on close 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //Buld the panel and add it the the JFrame.
    buildPanel();
    //Add the panel to the frames content pane
    add(panel);
    //Display the window.
    setVisible(true);   
}

private void buildPanel() {

    panel = new JPanel();

    addButton = new JButton("Add Contact");
    viewButton = new JButton("View Contacts");

    firstNameLabel = new JLabel("First Name");
    firstNameInput = new JTextField(10);
    lastNameLabel = new JLabel("Last Name: ");
    lastNameInput = new JTextField(10);
    phoneNumLabel = new JLabel("Phone Number: ");
    phoneInput = new JTextField(10);
    emailLabel = new JLabel("Email: ");
    emailInput = new JTextField(10);


    /*Add labels, text fields and buttons to the panel*/
    panel.add(firstNameLabel);
    panel.add(firstNameInput);
    panel.add(lastNameLabel);
    panel.add(lastNameInput);
    panel.add(phoneNumLabel);
    panel.add(phoneInput);
    panel.add(emailLabel);
    panel.add(emailInput);
    panel.add(addButton);
    panel.add(viewButton);

    theHandler handler = new theHandler();
    addButton.addActionListener(handler);
    viewButton.addActionListener(handler);

}


private class theHandler implements ActionListener {

public void actionPerformed(ActionEvent event) {
    fn = firstNameInput.getText();
    ln = lastNameInput.getText();
    ph = phoneInput.getText();
    em = emailInput.getText();
    Contact con = new Contact(fn, ln, ph, em);  

    if(event.getSource() == addButton) {
        list.add(con);  
    }
    else if(event.getSource() == viewButton) {
        JOptionPane.showMessageDialog(null,"Contact Info:\n" + con);        
    }
    else if(event.getSource() == viewButton) {
        JOptionPane.showMessageDialog(null, con);       
    }

}

}

public static void main(String[] args) {
    new InputForm();

}

}
公共类InputForm扩展JFrame{
专用静态JPanel面板;
私有静态JLabel firstnamelab;
私有静态jlabellastnamelab;
私有静态JLabel-phoneNumLabel;
专用静态JLabel标签;
专用静态JLabel联系人消息;
私有静态JTextField firstNameInput;
私有静态JTextField lastNameInput;
私有静态JTextField电话输入;
私有静态JTextField输入;
私有静态JButton addButton;
私有静态JButton视图按钮;
私有字符串fn;
私有字符串ln;
私人字符串ph;
私有字符串em;
私有列表=新的ArrayList();
公共输入表单(){
int windowWidth=650;
内窗高度=550;
//窗口标题
setTitle(“联系方式”);
//设置窗口大小。
设置大小(窗宽、窗高);
//关门退出
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//构建面板并将其添加到JFrame。
buildPanel();
//将面板添加到框架内容窗格中
添加(面板);
//显示窗口。
setVisible(真);
}
私有void buildPanel(){
panel=新的JPanel();
addButton=新的JButton(“添加联系人”);
viewButton=新按钮(“查看联系人”);
firstNameLabel=新的JLabel(“名字”);
firstNameInput=新的JTextField(10);
lastNameLabel=新的JLabel(“姓氏:”);
lastNameInput=新的JTextField(10);
phoneNumLabel=新的JLabel(“电话号码:”);
phoneInput=新的JTextField(10);
emailLabel=新的JLabel(“电子邮件:”);
emailInput=新的JTextField(10);
/*向面板添加标签、文本字段和按钮*/
面板。添加(firstNameLabel);
panel.add(firstNameInput);
面板。添加(lastNameLabel);
panel.add(lastNameInput);
panel.add(phoneNumLabel);
面板。添加(电话输入);
panel.add(emailLabel);
panel.add(emailInput);
panel.add(添加按钮);
面板。添加(查看按钮);
theHandler=新的theHandler();
addButton.addActionListener(处理程序);
addActionListener(处理程序);
}
私有类处理程序实现ActionListener{
已执行的公共无效操作(操作事件){
fn=firstNameInput.getText();
ln=lastNameInput.getText();
ph=phoneInput.getText();
em=emailInput.getText();
触点con=新触点(fn、ln、ph、em);
if(event.getSource()==addButton){
列表。添加(con);
}
else if(event.getSource()==viewButton){
showMessageDialog(空,“联系人信息:\n”+con);
}
else if(event.getSource()==viewButton){
showMessageDialog(null,con);
}
}
}
公共静态void main(字符串[]args){
新InputForm();
}
}
好的,这是我根据“满是鳗鱼的气垫船”的建议创建的一个联系人类

公共类联系人{
私有字符串fn;
私有字符串ln;
私人字符串ph;
私有字符串em;
私有列表=新的ArrayList();
公共联系人(字符串fn、字符串ln、字符串ph、字符串em){
这个.fn=fn;
this.ln=ln;
这个.ph=ph;
this.em=em;
}
公共字符串getFirstName(){
返回fn;
}
public void setFirstName(字符串fn){
这个.fn=fn;
}
公共字符串getLastName(){
返回项次;
}
public void setLastName(字符串项次){
this.ln=ln;
}
公共字符串getPhone(){
回流ph值;
}
公用设置电话(字符串ph){
这个.ph=ph;
}
公共字符串getEmail(){
返回fn;
}   
public void setEmail(字符串em){
this.em=em;
}
公共字符串toString(){
返回“名字:”+getFirstName()+“\n”+
姓氏:“+getLastName()+”\n+
电话号码:“+getPhone()+”\n+
电子邮件:“+getEmail()+”\n”;
}
公共静态void main(字符串[]args){
新InputForm();
}
}
建议:

  • 首先也是最重要的是,创建一个非GUI联系人类,该类具有名字、姓氏、电话号码和电子邮件地址字段,一个具有体面的构造函数,该构造函数将四个字段的字符串作为参数,一个具有getter和setter方法
  • 同时为联系人提供一个合适的
    公共字符串toString()
    覆盖方法。当您想要调试代码时,这会非常有帮助
  • 将您的列表设置为
    列表
    ,与ArrayList相同——它应该是
    ArrayList
  • 在处理程序ActionListener中,从JTextFields中提取字符串,并创建一个Contact对象
  • 然后将联系人对象添加到列表中
  • 没有必要像向列表添加数据时那样使用迭代器。您只需创建一个联系人实例并调用列表的
    add(…)
    方法,就可以了
  • 你完了
  • 附带建议(与您的主要问题无关):

  • 阅读并使用布局管理器,因为它们的使用可以使您的GUI看起来更加美观,功能更加强大<
    public class Contact {
        private String fn;
        private String ln;
        private String ph;
        private String em;
    
    private List<Contact> list = new ArrayList<Contact>();
    
    public Contact(String fn, String ln, String ph, String em) { 
        this.fn = fn;
        this.ln = ln;
        this.ph = ph;
        this.em = em;
    }
        public String getFirstName() {
            return fn;
        }
        public void setFirstName(String fn) {
            this.fn = fn;
        }
    
        public String getLastName() {
            return ln;
        }
        public void setLastName(String ln) {
            this.ln = ln;
        }
    
        public String getPhone() {
            return ph;
        }
        public void setPhone(String ph) {
            this.ph = ph;
        }
    
        public String getEmail() {
            return fn;
        }   
        public void setEmail(String em) {
            this.em = em;
        }
    
        public String toString() {
            return "First Name: " + getFirstName() + "\n" +
                    "Last Name: " + getLastName() + "\n" +
                    "Phone Number: " + getPhone() + "\n" +
                    "Email: " + getEmail() + "\n";
        }
    
    public static void main(String[] args) {
        new InputForm();
    
    }
    }
    
    import java.awt.BorderLayout;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.GridLayout;
    import java.awt.Insets;
    import java.awt.event.ActionEvent;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.swing.*;
    
    @SuppressWarnings("serial")
    public class InputForm2 extends JPanel {
        private static final int COLS = 10;
        private List<ShoppingItem> shoppingList = new ArrayList<>();
        private JTextField nameField = new JTextField(COLS);
        private JTextField skuField = new JTextField(COLS);
        private JTextField priceField = new JTextField(COLS);    
    
        public InputForm2() {
            JPanel formPanel = new JPanel(new GridBagLayout());
            formPanel.add(new JLabel("Item Name:"), createGbc(0, 0));
            formPanel.add(nameField, createGbc(1, 0));
            formPanel.add(new JLabel("Item SKU:"), createGbc(0, 1));
            formPanel.add(skuField, createGbc(1, 1));
            formPanel.add(new JLabel("Price:"), createGbc(0, 2));
            formPanel.add(priceField, createGbc(1, 2));
    
            JPanel btnPanel = new JPanel(new GridLayout(1, 0, 4, 4));
            btnPanel.add(new JButton(new AddItemAction("Add Item")));
            btnPanel.add(new JButton(new DisplayItemsAction("Display Items")));
    
            setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
            setLayout(new BorderLayout());
            add(formPanel, BorderLayout.CENTER);
            add(btnPanel, BorderLayout.PAGE_END);
        }
    
        private static GridBagConstraints createGbc(int x, int y) {
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridx = x;
            gbc.gridy = y;
            gbc.weightx = 1.0;
            gbc.weighty = 1.0;
            gbc.anchor = x == 0 ? GridBagConstraints.WEST : GridBagConstraints.EAST;
            gbc.fill = GridBagConstraints.HORIZONTAL;
            int inset = 4;
            int leftInset = x == 0 ? inset : 3 * inset;
            gbc.insets = new Insets(inset, leftInset, inset, inset);
            return gbc;
        }
    
        private class AddItemAction extends AbstractAction {
            public AddItemAction(String name) {
                super(name);
                int mnemonic = (int) name.charAt(0); // mnemonic keystroke
                putValue(MNEMONIC_KEY, mnemonic);
            }
    
            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO finish this
                // get Strings from fields
                // create ShoppingItem object
                // add to shoppingList
    
            }
        }
    
        private class DisplayItemsAction extends AbstractAction {
            public DisplayItemsAction(String name) {
                super(name);
                int mnemonic = (int) name.charAt(0); // mnemonic keystroke
                putValue(MNEMONIC_KEY, mnemonic);
            }
    
            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO finish this
    
            }
        }
    
        private static void createAndShowGui() {
            InputForm2 mainPanel = new InputForm2();
    
            JFrame frame = new JFrame("InputForm2");
            frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            frame.getContentPane().add(mainPanel);
            frame.pack();
            frame.setLocationByPlatform(true);
            frame.setVisible(true);
        }
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    createAndShowGui();
                }
            });
        }
    }
    
    class ShoppingItem {
        private String name;
        private String skuNumber;
        private double price;
        public ShoppingItem(String name, String skuNumber, double price) {
            this.name = name;
            this.skuNumber = skuNumber;
            this.price = price;
        }
        public String getName() {
            return name;
        }
        public String getSkuNumber() {
            return skuNumber;
        }
        public double getPrice() {
            return price;
        }
    
        @Override
        public String toString() {
            return String.format("name: %s, sku: %s, price: $%0.df", name, skuNumber, price);        
        }
    }
    
        if(event.getSource() == addButton) {
        fn = firstNameInput.getText();
        ln = lastNameInput.getText();
        ph = phoneInput.getText();
        em = emailInput.getText();
        list.add(fn + "\n" + ln + "\n" + ph + "\n" + em + "\n");   
    
    public void actionPerformed(ActionEvent event) {
    
        if(event.getSource() == addButton) {
            fn = firstNameInput.getText();
            ln = lastNameInput.getText();
            ph = phoneInput.getText();
            em = emailInput.getText();
            list.add(fn + ", " + ln + ", " + ph + ", " + em + ".");
            }
        }
        else if(event.getSource() == viewButton) {
            JOptionPane.showMessageDialog();        
        }