2014-07-10 68 views
0

我正在寫一個用於人力資源管理的小型GUI程序,Insert類是當點擊按鈕「提交」時向MySQL添加人員,並且我有問題將從JTextField讀取的值傳遞給HRActionListener這是從ActionListener,它只允許一個參數實現,我試圖在一個類中包含所有的按鈕事件。從JTextField傳遞值到ActionListener

這裏是插入, AddGui and HRActionListener`

public class Insert { 
private int id; 
private String name; 
private String sex;   
private String department; 
private int salary; 

public Insert(int id, String name, String sex, String department, int salary){ 
    this.id = id; 

    this.name = name; 
    this.sex = sex; 
    this.department = department; 
    this.salary = salary; 

} 



public void insert(){ 
    Connection conn = DBconn.getConn(); 
    String sql = "insert into person values(?,?,?,?,?)"; 
    PreparedStatement preparedStatement = null;    
    try { 
     preparedStatement = conn.prepareStatement(sql); 
     preparedStatement.setInt(1,id); 
     preparedStatement.setString(2,name); 
     preparedStatement.setString(3,sex); 
     preparedStatement.setString(4,department); 
     preparedStatement.setInt(5,salary); 
     //update 
     int rowsAffected = preparedStatement.executeUpdate(); 
    } catch (SQLException ex) { 
     System.out.println("增加操作失敗"); 
    } finally{ 

      try { 
       if (preparedStatement!=null){ 
       preparedStatement.close();} 
       if (conn != null){ 
       conn.close();} 
      } catch (SQLException ex) { 
       System.out.println("close failed"); 
      } 
     } 



    } 


} 

public class HRActionListener implements ActionListener{ 


public void actionPerformed(ActionEvent e) { 
    String string = e.getActionCommand(); 
    if(string.equals("添加")){ 
     new AddGui().ShowAddGui(); 
    }}} 

public class AddGui { 
public void ShowAddGui() { 
JFrame frame = new JFrame("添加"); 
Container con = new Container(); 
con.setLayout(new FlowLayout()); 

JPanel panel = new JPanel(); 
panel.setLayout(new GridLayout(6,2)); 

JLabel label = new JLabel("添加新員工"); 
label.setHorizontalAlignment(JLabel.CENTER); 
con.add(label); 

JButton id = new JButton("工號:"); 
JTextField idField = new JTextField(5); 
panel.add(id); 
panel.add(idField); 

JButton name = new JButton("姓名:"); 
JTextField nameField = new JTextField(5); 
panel.add(name); 
panel.add(nameField); 

JButton sex = new JButton("性別:"); 
JTextField sexField = new JTextField(5); 
panel.add(sex); 
panel.add(sexField); 

JButton depart = new JButton("部門:"); 
JTextField departField = new JTextField(5); 
panel.add(depart); 
panel.add(departField); 

JButton salary = new JButton("工資:"); 
JTextField salaryField = new JTextField(5); 
panel.add(salary); 
panel.add(salaryField); 


JButton addTo = new JButton("確定"); 
addTo.addActionListener(new HRActionListener()); 

JButton deleteTo = new JButton("取消"); 
panel.add(addTo); 
panel.add(deleteTo); 

con.add(panel); 
frame.add(con); 
frame.setVisible(true); 
frame.setSize(220, 270); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}} 
+0

你嘗試打開每個按鈕相同的新的幀的實例點擊? – Sanjeev

+0

對不起,這裏可能會有一些中國字符引起誤解!我想要的是點擊添加按鈕時,信息用戶輸入可以插入數據庫! – ZoeH

+0

如果那是真的,那麼你爲什麼要在你的actionPerformed中調用'new AddGui()。ShowAddGui();''這將永遠創造一個新的框架。相反,你需要在這裏調用insert方法。 – Sanjeev

回答

1

你可以嘗試,使代碼的AddGui類實現您的ActionListener

class AddGui implements ActionListener { 

    private JTextField idField = new JTextField(5); 
    //Other input fields 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     //Get all other fields here 
     Insert record = new Insert(Integer.parseInt(idField.getText()), "name", "sex", "dept", 0); 
     //call to insert() 
    } 

在這種情況下,你的按鈕聲明應該是:

JButton addTo = new JButton(""); 
addTo.addActionListener(this);