Java 向ArrayList添加JTextField的GUI
我删除了我的另一篇帖子,因为有人告诉我这篇帖子不具体,我想问一个更具体的问题,下面是 该程序应该接收联系人信息(姓名、电话、电子邮件),然后单击“添加”按钮将创建联系人对象并转到ArrayList。然后,单击查看按钮时,您将看到添加到其中的所有联系人 我一直在看关于如何使用GUI的教程和书籍,并且能够创建一个包含所有必要内容的窗口来添加联系人信息 我的问题:我的难题是如何将这些信息添加到数组列表中 在我弄清楚如何添加信息后,我将研究如何在单击查看按钮时查看它 如果您能给我任何帮助或建议,我将不胜感激Java 向ArrayList添加JTextField的GUI,java,swing,user-interface,arraylist,Java,Swing,User Interface,Arraylist,我删除了我的另一篇帖子,因为有人告诉我这篇帖子不具体,我想问一个更具体的问题,下面是 该程序应该接收联系人信息(姓名、电话、电子邮件),然后单击“添加”按钮将创建联系人对象并转到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();
}
}
建议:
公共字符串toString()
覆盖方法。当您想要调试代码时,这会非常有帮助列表
,与ArrayList相同——它应该是ArrayList
add(…)
方法,就可以了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();
}