2016-11-26 3 views
1

Я пытаюсь поставить набор результатов неизвестного SQL-запроса в javafx TextArea в виде таблицы. Мне удалось сделать это отлично, но у меня были небольшие проблемы с выравниванием. Here is the result that i getString Alignment

Вот мой мой код:

 private void querySubmitButtonClicked() { 
     try { 
     String q = queryTF.getText(); 
     PreparedStatement ps = getConnection().prepareStatement(q); 
     if ((q.startsWith("INSERT")) || (q.startsWith("UPDATE")) || (q.startsWith("DELETE"))) 
      ps.executeUpdate(); 
     else 
      queryResult = ps.executeQuery(); 

     ResultSetMetaData rsmd = queryResult.getMetaData(); 
     int numberOfColumns = rsmd.getColumnCount(); 
     StringBuilder sb = new StringBuilder(); 
     String columnsNames = ""; 

     for (int i = 1; i <= numberOfColumns; i++) 
      columnsNames += String.format("%-40s", rsmd.getColumnName(i)); 

     sb.append(columnsNames + "\n"); 
     while (queryResult.next()) { 
      String columnsValues = ""; 
      for (int i = 1; i <= numberOfColumns; i++) { 
       columnsValues += String.format("%-40s", queryResult.getString(i)); 
      } 
      sb.append(columnsValues + "\n"); 
     } 
     TextArea resultArea = new TextArea(sb.toString()); 
     resultArea.setEditable(false); 
     resultArea.setFocusTraversable(false); 
     resultArea.setStyle("-fx-font-size: 10"); 
     expertPane.setCenter(resultArea); 

    } catch (SQLException e) { 
     expertPane.setCenter(msgLabel); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

Я попытался с помощью правой allignemnt с помощью% 40s, но это Wouldnt Allign правильно также. Я также попытался использовать% 100 и% -100s, он тоже не работал. Любая помощь?

+0

Можно ли использовать моноширинный шрифт? Как Монако или Курьер Нью. –

+0

@ OleV.V. изменение шрифта на Courier New решило мою проблему !! Спасибо, лот! –

ответ

0

Как я уже сказал в комментарии, используйте шрифт моноширинной (фиксированной ширины), такой как Monaco или Courier New. Это должно сделать это.

Я не знаю FX, но я думаю, что другой вариант - использовать TableView вместо TextArea.

+0

Я много использовал табличный вид в своем проекте. Но делать это в виде таблицы очень сложно/невозможно, так как я не знаю тип, число и размер моих данных; это зависит от запроса пользователя. В любом случае спасибо, изменив шрифт, решив мою проблему! –

+0

Да, я тоже думал, что «TableView» может быть сложным вариантом. Просто хотел упомянуть ради полноты - возможно, это было не актуально вообще. –