我正在创建一个联系人申请表。还有其他我应该创造的东西吗?

时间:2013-11-27 09:37:58

标签: java swing jframe

我正在使用Eclipse Kepler创建应用程序...我在Eclipse-数据库,实体和UI中创建了3个数据库。在数据库中,它包含ContactDAO,UserDAO和DBManager(用于数据库连接)。在实体中,它包含联系人和用户。在UI中,它包含ContactAdd,COntactDetails,ContactList,LoginFrame和MenuFrame JFrames。现在,我被困在ContactList框架...它包含ComboBox,我试图运行它,但我无法得到名称......这是代码:

public class ContactList extends JFrame {

    private JPanel contentPane;
    private JTextField txtSearch;
    private JComboBox cbContactNames;
    private MenuFrame parentFrame;
    private Contact selContact;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ContactList frame = new ContactList(null);
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public ContactList(MenuFrame f) {
        this.parentFrame = f;
        setTitle("Personal Assistant");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        txtSearch = new JTextField();
        txtSearch.setBounds(22, 11, 294, 20);
        contentPane.add(txtSearch);
        txtSearch.setColumns(10);

        JButton btnSearch = new JButton("Search");
        btnSearch.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                searchContact();

            }
        });
        btnSearch.setBounds(326, 10, 89, 23);
        contentPane.add(btnSearch);

        JLabel lblName = new JLabel("Name");
        lblName.setBounds(42, 88, 46, 14);
        contentPane.add(lblName);

        cbContactNames = new JComboBox();
        cbContactNames.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange()==ItemEvent.SELECTED)
                {
                    if (cbContactNames.getSelectedIndex()>0){
                        String name=(String)cbContactNames.getSelectedItem();
                        selContact=ContactDAO.findContactByName(name); //adjusted
                        showContact();

                    }
                }
                }


        });
        ArrayList<Contact> ContactList=ContactDAO.getAllContacts();
        cbContactNames.addItem("--Select Name--");
        for (int i=0; i<ContactList.size(); i++)
        {
            Contact contact = ContactList.get(i);
            cbContactNames.addItem(contact.getName());
        }

        cbContactNames.setBounds(87, 85, 229, 20);
        contentPane.add(cbContactNames);

        JButton btnClose = new JButton("Close");
        btnClose.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                goBack();
            }

        });
        btnClose.setBounds(158, 203, 89, 23);
        contentPane.add(btnClose);
    }

    private void goBack() {
        // TODO Auto-generated method stub
        parentFrame.setVisible(true);
        this.dispose();
    }


    private void showContact() {
        // TODO Auto-generated method stub
        ContactDetails contactdetails=new ContactDetails(this,selContact);
        contactdetails.setVisible(true);
        this.setVisible(false);

    }

    private void searchContact() {
        String name=txtSearch.getText();
        if (name!=null){
            selContact=ContactDAO.findContactByName(txtSearch.getText());
        }
        showContact();
    }
}

然后,我还创建了ContactDetails框架,其中包含联系人详细信息,编辑保存和关闭按钮,以及删除标签设置为图像。该项目说,当点击编辑按钮时,保存按钮将可见......我不知道该怎么做...这是我的代码:

public class ContactDetails extends JFrame {

    private JPanel contentPane;
    private JTextField txtName;
    private JTextField txtMobile;
    private JTextField txtHome;
    private JTextField txtEmail;
    private JButton btnEdit;
    private JButton btnSave;
    private ContactList parentFrame;
    private Contact contact;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ContactDetails frame = new ContactDetails(null,null);
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public ContactDetails(ContactList f,Contact c) {
        this.parentFrame = f;
        this.contact=c;
        setTitle("Contact Details");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        JLabel lblImage = new JLabel("");
        lblImage.setIcon(new ImageIcon(ContactDetails.class.getResource("/images/kitty.png")));
        lblImage.setBounds(34, 28, 79, 70);
        contentPane.add(lblImage);

        JLabel lblName = new JLabel("Name:");
        lblName.setBounds(119, 48, 46, 14);
        contentPane.add(lblName);

        txtName = new JTextField(contact.getName());
        txtName.setBounds(162, 45, 169, 20);
        contentPane.add(txtName);
        txtName.setColumns(10);

        JLabel lblMobile = new JLabel("Mobile:");
        lblMobile.setBounds(119, 93, 46, 14);
        contentPane.add(lblMobile);

        txtMobile = new JTextField();
        txtMobile.setBounds(162, 90, 169, 20);
        contentPane.add(txtMobile);
        txtMobile.setColumns(10);

        JLabel lblHome = new JLabel("Home:");
        lblHome.setBounds(119, 141, 46, 14);
        contentPane.add(lblHome);

        txtHome = new JTextField();
        txtHome.setBounds(162, 138, 169, 20);
        contentPane.add(txtHome);
        txtHome.setColumns(10);

        JLabel lblEmail = new JLabel("Email:");
        lblEmail.setBounds(119, 186, 46, 14);
        contentPane.add(lblEmail);

        txtEmail = new JTextField();
        txtEmail.setBounds(162, 183, 169, 20);
        contentPane.add(txtEmail);
        txtEmail.setColumns(10);

        JButton btnSave = new JButton("Save");
        btnSave.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                contactAdded();
            }

        });
        btnSave.setBounds(184, 227, 74, 23);
        contentPane.add(btnSave);

        JButton btnEdit = new JButton("Edit");
        btnEdit.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                editContact();
            }
        });
        btnEdit.setBounds(110, 227, 74, 23);
        contentPane.add(btnEdit);

        JButton btnClose = new JButton("Close");
        btnClose.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                goBack();
            }
        });
        btnClose.setBounds(257, 227, 74, 23);
        contentPane.add(btnClose);

        JLabel lblDelete = new JLabel("");
        lblDelete.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent arg0) {
                removeContact();
            }


        });
        lblDelete.setIcon(new ImageIcon(ContactDetails.class.getResource("/images/trush.png")));
        lblDelete.setBounds(365, 28, 46, 54);
        contentPane.add(lblDelete);
    }
    private void contactAdded() {
        // TODO Auto-generated method stub
        String name=txtName.getText();
        String mobile=txtMobile.getText();
        String home=txtHome.getText();
        String email=txtEmail.getText();

        Contact contact = new Contact(name, mobile, home, email);
        if(ContactDAO.create(contact)){
            JOptionPane.showMessageDialog(contentPane, "Contact successfull saved!");

        }
        else {
            JOptionPane.showMessageDialog(contentPane, "Contact not save!");
        }
    }

    private void goBack() {
        // TODO Auto-generated method stub
        parentFrame.setVisible(true);
        this.dispose();

    }
    private void removeContact() {
        // TODO Auto-generated method stub
        String name=txtName.getText();
        String mobile=txtMobile.getText();
        String home=txtHome.getText();
        String email=txtEmail.getText();

        Contact contact = new Contact(name, mobile, home, email);
        if(ContactDAO.delete(contact)){

            JOptionPane.showMessageDialog(contentPane, "Contact deleted");
        }
        else {
            JOptionPane.showMessageDialog(contentPane, "Contact delete unsuccessful");
        }

    }
    private void editContact() {
        // TODO Auto-generated method stub
        String name=txtName.getText();
        String mobile=txtMobile.getText();
        String home=txtHome.getText();
        String email=txtEmail.getText();

        Contact contact = new Contact(name, mobile, home, email);
        if (ContactDAO.update(contact)){

          JOptionPane.showMessageDialog(contentPane, "Contact successfully updated");

    }
     else { 
        JOptionPane.showMessageDialog(contentPane, "Contact update unsuccessful");

    }
    }
}

此外,保存按钮对我来说很棘手......似乎在单击“保存”按钮后,会弹出一条消息,确认应该包含(确定)按钮。单击(确定)按钮时,将禁用“保存”按钮,并再次启用“编辑”按钮。所有文本字段都将被禁用。 (删除图标按钮)还需要一个包含(是,否和取消)按钮的提示框。如果确认,联系人将被删除,用户将被带回联系人列表框架......我该怎么做?

告诉我是否必须创建另一个JFrame或DAO ......

1 个答案:

答案 0 :(得分:0)

你的保存按钮需要这样的东西,删除按钮也是如此:

    int showConfirmDialog = JOptionPane.showConfirmDialog(new JFrame(), "Approve?","Title",JOptionPane.YES_NO_OPTION);
    if(showConfirmDialog == JOptionPane.YES_OPTION){
        btnSave.setEnabled(false);
        btnEdit.setEnabled(true);
        txtName.setEnabled(false);
        //other fields
    } else {
        //If no or cancel actions
    }

阅读tutorial for dialogs

观看showConfirmDialog(...)