2016-09-29 2 views
0

У меня есть база данных, которая заполняет jList, чтобы каждый столбец каждой строки отображался как 1 элемент jList. Я установил вертикальную полосу прокрутки по мере необходимости и по горизонтали никогда которая работала, однакоЛинейная упаковка для Jlist/следующей строки для stringbuilder

  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

«Оффтопик:« вы можете посмотреть в «Чистом коде» Роберта Мартина. Ваш код может выиграть от этого. **Много**. Вы делаете слишком много вещей в рамках этого плохого метода. Серьезно: ужасный стиль. – GhostCat

+0

Я загляну в него, если у меня будет время, дай мне перерыв, я не специалист по программному обеспечению. Я фармацевт и узнал Java за 1 месяц LoL. Я читал «Сэм учит себя Яву через 21 день». – Evan12

ответ

1

Это не «перенос строк», строка текста будет слишком далеко по горизонтали, так что не все видно. ... Для этого я попытался использовать .append ("\ n") и .append (System.getProperty ("line.separator")), и не работал.

JList использует JLabel как его по умолчанию визуализатора, что означает новые линии не будут оказаны. Вы могли бы пойти об оказании содержания с html, но учитывая ...

хотел столбцы в вертикальном списке, такие как

... Вы могли бы рассмотреть вопрос об использовании JTable.

1

и горизонтальный никогда

Если линия слишком велико, то вы не хотите, чтобы использовать никогда. Вы хотите, чтобы JList определял, когда требуется прокрутка.

Я хотел бы колонки в вертикальном списке, таких как:

Не добавлять данные.

Вместо этого вам нужно добавить 5 отдельных элементов в JList. Затем каждый элемент появится в новой строке.