用于stringbuilder的Jlist / next line的换行

时间:2016-09-29 18:59:03

标签: java sql swing

我有一个填充jList的数据库,这样每行的每一列都显示为1个jList项。我已经根据需要设置了垂直滚动条,而水平从未设置过,但是

  1. 它不是“换行”,文本行水平走得太远,所以它不是全部可见。

  2. 我希望垂直列出列,例如:

  3. 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();
    

2 个答案:

答案 0 :(得分:1)

  

它不是“换行”,文本行水平走得太远,所以它并非全部可见。 ...为此我尝试了.append(“\ n”)和.append(System.getProperty(“line.separator”));,两者都没有用。

JList使用JLabel作为默认渲染器,这意味着不会渲染新行。你可以用html来渲染内容,但是给出了......

  

希望垂直列出列,例如

...您可以考虑使用JTable

答案 1 :(得分:1)

  

和水平从不

如果你的行太大,那么你就不想使用never。您希望让JList确定何时需要滚动。

  

我希望垂直列出列,例如:

请勿附加数据。

相反,您需要向JList添加5个单独的项目。然后每个项目将出现在新行上。