2016-09-29 21 views
0

我有一個填充jList的數據庫,這樣每行的每一列顯示爲1個jList項目。我已經設置了垂直滾動條根據需要和水平絕不然而這用於stringlist的Jlist/next line的換行

  1. 不是「換行」,文字行太過分了水平,所以它不是所有可見的工作。

  2. 我想的列被垂直列出如:

COLUMN1: column1 info 
COLUMN2: column1 info 
COLUMN3: column1 info 
COLUMN4: column1 info 

代替,正如我所說它是水平的,例如:

COLUMN1: column1 info COLUMN2: column2 info COLUMN3: column3 info 

對於這我已經嘗試過.append(「\ n」)和.append(System.getProperty(「line.separator」)),都不起作用。

解決這些問題中的一個或兩個問題的最佳方法是什麼?

謝謝!

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {           

    DefaultListModel model = new DefaultListModel(); 
    jList1.setModel(model); 
    final String SPACE = " "; 
    StringBuilder sBuilder = new StringBuilder(); 
    String sqlQuery = "select Column1, Column2, Column3, Column4, Column5 from APP.DATA123 " 
      + "where (Column1 = ?) AND (Column2 = ?) AND (Column3= ?) OR (Column2 = ?) AND (Column3 = ?)"; 


     String abc = jTextField2.getText(); 
     String cba = (String)jComboBox1.getSelectedItem(); 
     String cab = (String)jComboBox2.getSelectedItem(); 
     String data = "jdbc:derby://localhost:1527/sample"; 
    try (
      Connection conn = DriverManager.getConnection(
      data, "app", "app"); 
      PreparedStatement st = conn.prepareStatement(sqlQuery)) { 

     Class.forName("org.apache.derby.jdbc.ClientDriver"); 
     st.setString(1, abc); 
     st.setString(2, cba); 
     st.setString(3, cab);  
     st.setString(4, cba); 
     st.setString(5, cab); 
     ResultSet rec = st.executeQuery(); 


     while (rec.next()) { 
     sBuilder.setLength(0); 
     sBuilder.append(rec.getString("Column1")).append(SPACE) 
       .append(rec.getString("Column2")).append(SPACE) 
       .append(rec.getString("Column3")).append(SPACE) 
       .append(rec.getString("Column4")).append(SPACE) 
       .append(rec.getString("Column5")).append(SPACE); 

     model.addElement(sBuilder.toString());   
     } 
     st.close(); 
+1

「Offtopic:」你可能想看看Robert Martin的「Clean code」。你的代碼可以從中受益。 **很多**。你在這種可憐的方法中做了太多事情。嚴重:可怕的風格。 – GhostCat

+0

如果我有時間,我會研究它,給我一個休息時間,我不是一個軟件人我是一名藥劑師,並在1個月的時間內學習了Java。我讀了「山姆的21天教你自己的Java」。 – Evan12

回答

1

這不是「換行」,文字行太過分了水平,所以它不是所有可見。 ...爲此,我嘗試了.append(「\ n」)和.append(System.getProperty(「line.separator」));兩者都不起作用。

JList使用JLabel作爲其默認渲染器,這意味着不會渲染新行。你可以去用html呈現內容,但鑑於...

希望列垂直列出諸如

...你可以考慮使用一個JTable

1

和水平絕不

如果線過大,那麼你不希望永遠不會使用。您希望讓JList確定何時需要滾動。

我想列垂直列如:

數據不追加。

相反,您需要將5個單獨的項目添加到JList。然後每個項目將出現在一個新的行。