2013-01-08 46 views
0

以下是將作業從SQlite顯示到表格中並將它們適當地設置爲labelText的方法。避免JTextField setText圍繞程序重複

private void setLabelText() { 
    try { 

    String table_click0 = (table_job.getModel().getValueAt(row, 0).toString());   
    String sqlSt = "SELECT Employer.name, * FROM Job INNER JOIN Employer ON Job.employerID = Employer.employerID WHERE jobID='"+table_click0+"' "; 
    conn = JavaConnect.ConnectDB(); 
    pst = conn.prepareStatement(sqlSt); 
    rs = pst.executeQuery(); 

    if(rs.next()) { 
     descriptionArea.setText(rs.getString(5)); 
     empTitLabel.setText(rs.getString(1)+" - "+rs.getString(4)); 
     idLabel.setText("Job Reference: " + rs.getString(2)); 
     typeLabel.setText("Job Type: " + rs.getString(6)); 
     salaryLabel.setText("Salary: " + rs.getString(7)); 
     benefitsLabel.setText("Benefits : " + rs.getString(8)); 
     vacLabel.setText("Vacancies : " + rs.getString(9)); 
     closeLabel.setText("Closing Date: " + rs.getString(10)); 
     reqLabel.setText("Requirement : " + rs.getString(11)); 
     placeLabel.setText("Placement : " + rs.getString(12)); 
     applyToLabel.setText("Apply To: " + rs.getString(13)); 
     statusLabel.setText("Job Status: "+rs.getString(14)); 
     locLabel.setText("Location: "+rs.getString(16)); 
     postedLabel.setText("Posted: "+rs.getString(15));   
    } 
} 

我希望現在允許用戶選擇Job(點擊表上的行)來允許編輯更新數據。所以我提供了一個表單來做到這一點,而不是像表單textfields那樣重複使用descriptionArea.setText(rs.getString(5));這樣的行,有沒有更簡單的方法來做到這一點。還是每個JTextfield都必須單獨使用textfieldName.setText(....)方式操縱,有沒有什麼技巧可以縮短它?任何不錯的簡單技巧,可能重複使用上面的代碼來減少重複。

+1

爲什麼不允許用戶直接編輯表格內的數據?或者表中沒有足夠的數據?您可能可以使用[JGoodies Binding API](http://www.jgoodies.com/freeware/libraries/binding/) – MadProgrammer

+0

慷慨地使用數組可以消除一些重複代碼。當然,這只是將重複代碼移動到初始化數組中。 –

+0

@MadProgrammer表收集了很多數據,所以不太理想,允許直接編輯,特別是當一個字段包含許多單詞的公司描述時。 – Hoody

回答

0

儘管JTextField用於編輯,您可以使用它來顯示結果。無論何時單擊,您都可以更改爲可編輯。