2016-09-29 51 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。然后每个项目将出现在一个新的行。