Java 使用从所选组合框项获取的对象数据填充JTextFields

Java 使用从所选组合框项获取的对象数据填充JTextFields,java,swing,Java,Swing,我会尽力解释这个问题 基本上,我拥有的是一个系统,它接收客户数据(客户是一个对象),然后将其添加到数组中。我认为工作没有问题。我想做的是,我还有一个选项,可以让用户编辑客户的详细信息。我试图实现这一点的方式是;在一个单独的GUI中,我有一个组合框,其中将填充当前在arrayList中的所有客户的名字。这也行得通 这是我的问题-我想发生的是,当从组合框中选择一个客户的名字时,它应该找到该对象,然后用其各自的数据填写JTextfield,例如,客户的名字应该出现在名字文本字段中,他的第二个名字应该出

我会尽力解释这个问题

基本上,我拥有的是一个系统,它接收客户数据(客户是一个对象),然后将其添加到数组中。我认为工作没有问题。我想做的是,我还有一个选项,可以让用户编辑客户的详细信息。我试图实现这一点的方式是;在一个单独的GUI中,我有一个组合框,其中将填充当前在arrayList中的所有客户的名字。这也行得通

这是我的问题-我想发生的是,当从组合框中选择一个客户的名字时,它应该找到该对象,然后用其各自的数据填写JTextfield,例如,客户的名字应该出现在名字文本字段中,他的第二个名字应该出现在第二个名字文本字段中,等等

我无法解决这个问题,因此非常感谢您的帮助

这只是少数几个课程中的一个,其余的都可以

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.text.MaskFormatter;
import javax.swing.JLabel;
import java.awt.SystemColor;
import java.text.ParseException;
import java.util.ArrayList;
import java.awt.Font;
import java.awt.Color;
import java.awt.Dimension;

import javax.swing.UIManager;
import java.awt.GridLayout;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.SwingConstants;
import javax.swing.JTextField;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JComboBox;

public class editCustomers extends JFrame {

private JPanel contentPane;
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
private JTextField textField_3;
ArrayList<Customers> customerList;
private MaskFormatter mask = null;


/**
 * Create the frame.
 */
public editCustomers(ArrayList<Customers> aList) {
    customerList = aList;
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 700, 600);
    setLocationRelativeTo(null);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    contentPane.setLayout(new BorderLayout(0, 0));
    setContentPane(contentPane);

    JPanel panel = new JPanel();
    contentPane.add(panel, BorderLayout.CENTER);
    panel.setLayout(new GridLayout(6, 0, 0, 0));

    JPanel panel_12 = new JPanel();
    panel.add(panel_12);
    panel_12.setLayout(new BorderLayout(0, 0));

    JLabel lblSelectACustomer = new JLabel("Select a Customer to Edit");
    panel_12.add(lblSelectACustomer, BorderLayout.WEST);

    JComboBox comboBox = new JComboBox();
    //comboBox.setModel(new DefaultComboBoxModel());
    for (Customers temp : customerList) {
        comboBox.addItem(temp.getfName());
        }
    panel_12.add(comboBox, BorderLayout.EAST);



    JPanel panel_3 = new JPanel();
    panel.add(panel_3);
    panel_3.setLayout(new BorderLayout(0, 0));

    JLabel lbl1 = new JLabel("Edit Customers First Name");
    lbl1.setVerticalAlignment(SwingConstants.TOP);
    Dimension d = lbl1.getPreferredSize();
    lbl1.setPreferredSize(new Dimension(d.width + 50, d.height));
    panel_3.add(lbl1, BorderLayout.WEST);

    JPanel panel_8 = new JPanel();
    panel_3.add(panel_8, BorderLayout.CENTER);

    textField = new JTextField();
    panel_8.add(textField);
    textField.setColumns(30);

    JPanel panel_4 = new JPanel();
    panel.add(panel_4);
    panel_4.setLayout(new BorderLayout(0, 0));

    JLabel lbl2 = new JLabel("Edit Customers Second Name");
    lbl2.setVerticalAlignment(SwingConstants.TOP);
    lbl2.getPreferredSize();
    lbl2.setPreferredSize(new Dimension(d.width + 50, d.height));
    panel_4.add(lbl2, BorderLayout.WEST);

    JPanel panel_9 = new JPanel();
    panel_4.add(panel_9, BorderLayout.CENTER);

    textField_1 = new JTextField();
    panel_9.add(textField_1);
    textField_1.setColumns(30);

    JPanel panel_5 = new JPanel();
    panel.add(panel_5);
    panel_5.setLayout(new BorderLayout(0, 0));

    JLabel lbl3 = new JLabel("Edit Customers Address");
    lbl3.setVerticalAlignment(SwingConstants.TOP);
    lbl3.getPreferredSize();
    lbl3.setPreferredSize(new Dimension(d.width + 50, d.height));
    panel_5.add(lbl3, BorderLayout.WEST);

    JPanel panel_10 = new JPanel();
    panel_5.add(panel_10, BorderLayout.CENTER);

    textField_2 = new JTextField();
    panel_10.add(textField_2);
    textField_2.setColumns(30);

    JPanel panel_6 = new JPanel();
    panel.add(panel_6);
    panel_6.setLayout(new BorderLayout(0, 0));

    JLabel lbl4 = new JLabel("Edit Customers Date of Birth");
    lbl4.setVerticalAlignment(SwingConstants.TOP);
    lbl4.getPreferredSize();
    lbl4.setPreferredSize(new Dimension(d.width + 50, d.height));
    panel_6.add(lbl4, BorderLayout.WEST);

    JPanel panel_11 = new JPanel();
    panel_6.add(panel_11, BorderLayout.CENTER);

    textField_3 = new JTextField();
    try {
        mask = new MaskFormatter("##/##/####");
        mask.setPlaceholderCharacter(' ');
    } catch (ParseException e) {
        e.printStackTrace();
    }       
    JFormattedTextField textField_3 = new JFormattedTextField(mask);
    textField_3.setText("dd/mm/yyyy");
    panel_11.add(textField_3);
    textField_3.setColumns(30);

    JPanel panel_2 = new JPanel();
    panel.add(panel_2);
    panel_2.setLayout(new BorderLayout(0, 0));

    JPanel panel_7 = new JPanel();
    panel_2.add(panel_7, BorderLayout.CENTER);

    JButton btnConfirm = new JButton("Confirm");
    btnConfirm.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

        }
    });
    panel_7.add(btnConfirm);

    JButton btnCancel = new JButton("Cancel");
    btnCancel.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            dispose();
        }
    });
    panel_7.add(btnCancel);

    JPanel panel_1 = new JPanel();
    panel_1.setBackground(SystemColor.activeCaption);
    contentPane.add(panel_1, BorderLayout.NORTH);

    JLabel lblEditACurrent = new JLabel("Edit a Current Customer");
    lblEditACurrent.setForeground(Color.BLACK);
    lblEditACurrent.setFont(new Font("Arial", Font.PLAIN, 19));
          lblEditACurrent.setBackground(UIManager.getColor("InternalFrame.activeTitleBackground"));
    panel_1.add(lblEditACurrent);
}

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                editCustomers frame = new editCustomers(new ArrayList<Customers>());
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

}
导入java.awt.BorderLayout;
导入java.awt.EventQueue;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.border.EmptyBorder;
导入javax.swing.text.MaskFormatter;
导入javax.swing.JLabel;
导入java.awt.SystemColor;
导入java.text.ParseException;
导入java.util.ArrayList;
导入java.awt.Font;
导入java.awt.Color;
导入java.awt.Dimension;
导入javax.swing.UIManager;
导入java.awt.GridLayout;
导入javax.swing.DefaultComboxModel;
导入javax.swing.JButton;
导入javax.swing.JFormattedTextField;
导入javax.swing.SwingConstants;
导入javax.swing.JTextField;
导入java.awt.event.ActionListener;
导入java.awt.event.ActionEvent;
导入javax.swing.JComboBox;
公共类editFrame扩展{
私有JPanel内容窗格;
私有JTextField textField;
私有JTextField textField_1;
私有JTextField textField_2;
私有JTextField textField_3;
ArrayList客户列表;
私有掩码格式掩码=null;
/**
*创建框架。
*/
公共编辑客户(ArrayList){
客户列表=列表;
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
立根(100100700600);
setLocationRelativeTo(空);
contentPane=newjpanel();
setboorder(新的EmptyBorder(5,5,5,5));
setLayout(新的BorderLayout(0,0));
setContentPane(contentPane);
JPanel面板=新的JPanel();
contentPane.add(面板,BorderLayout.CENTER);
panel.setLayout(新的GridLayout(6,0,0,0));
JPanel panel_12=新的JPanel();
面板。添加(面板12);
面板_12.设置布局(新边界布局(0,0));
JLabel lblSelectACustomer=新JLabel(“选择要编辑的客户”);
面板12.添加(lblSelectACustomer,BorderLayout.WEST);
JComboBox comboBox=新的JComboBox();
//setModel(新的DefaultComboBoxModel());
对于(客户临时:客户列表){
comboBox.addItem(temp.getfName());
}
面板_12.添加(组合框,边框布局。东);
JPanel panel_3=新的JPanel();
面板。添加(面板3);
面板_3.设置布局(新边界布局(0,0));
JLabel lbl1=新JLabel(“编辑客户名”);
lbl1.设置垂直对齐(旋转恒温器顶部);
维度d=lbl1.getPreferredSize();
lbl1.设置首选尺寸(新尺寸(d.宽度+50,d.高度));
面板3.添加(lbl1,边界布局,西侧);
JPanel panel_8=新的JPanel();
面板3.添加(面板8,边框布局.中心);
textField=新的JTextField();
面板8.添加(文本字段);
textField.setColumns(30);
JPanel panel_4=新的JPanel();
面板。添加(面板4);
面板_4.设置布局(新边界布局(0,0));
JLabel lbl2=新的JLabel(“编辑客户的第二个名称”);
lbl2.设置垂直对齐(SwingConstants.顶部);
lbl2.getPreferredSize();
lbl2.设置首选尺寸(新尺寸(d.宽度+50,d.高度));
面板4.添加(lbl2,边界布局。西部);
JPanel panel_9=新的JPanel();
面板4.添加(面板9,边框布局.中心);
textField_1=新的JTextField();
面板9.添加(文本字段1);
textField_1.设置列(30);
JPanel panel_5=新的JPanel();
面板。添加(面板5);
面板_5.设置布局(新边界布局(0,0));
JLabel lbl3=新JLabel(“编辑客户地址”);
lbl3.设置垂直对齐(SwingConstants.顶部);
lbl3.getPreferredSize();
lbl3.设置首选尺寸(新尺寸(d.宽度+50,d.高度));
面板5.添加(lbl3,边界布局。西部);
JPanel panel_10=新的JPanel();
面板5.添加(面板10,边框布局.中心);
textField_2=新的JTextField();
面板10.添加(文本字段2);
textField_2.设置列(30);
JPanel panel_6=新的JPanel();
面板。添加(面板_6);
面板_6.设置布局(新边界布局(0,0));
JLabel lbl4=新JLabel(“编辑客户出生日期”);
lbl4.设置垂直对齐(SwingConstants.顶部);
lbl4.getPreferredSize();
lbl4.设置首选尺寸(新尺寸(d.宽度+50,d.高度));
面板6.添加(lbl4,边界布局。西部);
JPanel panel_11=新的JPanel();
面板6.添加(面板11,边框布局.中心);
textField_3=新的JTextField();
试一试{
mask=新的MaskFormatter(“##/#/#/##/###”);
掩码。设置占位符字符(“”);
}捕获(解析异常){
e、 printStackTrace();
}       
JFormattedTextField textField_3=新JFormattedTextField(掩码);
textField_3.setText(“dd/mm/yyyy”);
面板11.添加(文本字段3);
textField_3.设置列(30);
JPanel panel_2=新的JPanel();
面板。添加(面板2);
面板2.设置布局(新边界布局(0,0));
JPanel panel_7=新的JPanel();
面板2.添加(面板7,边框布局.中心);
JButton btnConfirm=新JButton(“确认”);
btnConfirm.addActionListener(新ActionListener()){
已执行的公共无效操作(操作事件e){
}
});
面板7.添加(BTN公司);
JButton btnCancel=新JButton(“取消”);
btnCancel.addActionListener(新ActionListener(){
公开无效诉讼
JComboBox<Customer> comboBox = new JComboBox<>();
//comboBox.setModel(new DefaultComboBoxModel());
for (Customers temp : customerList) {
    comboBox.addItem(temp);
}
comboBox.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
        Customer customer = comboBox.getSelectedItem();
        // Use the above customer object's fields to populate your text fields

    }
});