2016-11-26 1 views
1

알 수없는 SQL 쿼리의 결과 집합을 javafx TextArea에 테이블 형태로 넣으려고합니다. 나는 그것을 완벽하게 할 수 있었지만 나는 정렬에 작은 문제가 있었다. Here is the result that i get문자열 정렬

여기에 내 내 코드입니다 :

 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(); 
    } 
} 

내가 % 40 대를 사용하여 바로 allignemnt를 사용했지만, 올바르게도 allign wouldnt한다. 나 또한 % 100s 및 % -100s를 사용하여 시도했지만 작업도하지 않았습니다. 도움이 되었습니까?

+0

모노 스페이스 글꼴을 사용할 수 있습니까? Monaco 또는 Courier New와 같습니다. –

+0

@ OleV.V. 글꼴을 Courier New로 변경하면 내 문제가 해결되었습니다! 너 한테 고마워! –

답변

0

의견에서 제안했듯이 Monaco 또는 Courier New와 같은 고정 폭 (고정 너비) 글꼴을 사용하십시오. 이렇게해야합니다.

FX는 모르지만 다른 옵션은 TextArea 대신 TableView을 사용하는 것입니다.

+0

내 프로젝트에서 테이블 뷰를 많이 사용했습니다. 하지만 tableview에서이 작업을 수행하는 것은 매우 복잡하거나 불가능합니다. 왜냐하면 데이터의 유형, 개수 및 크기를 알지 못하기 때문입니다. 그것은 사용자의 쿼리에 의존합니다. 어쨌든 고맙습니다. 내 문제를 해결 한 글꼴을 변경하십시오! –

+0

그래, 나는 또한'TableView'가 복잡한 옵션일지도 모른다고 생각하고 있었다. 완전성을 위해 언급하고 싶었습니다. 아마도 전혀 관련이 없었을 것입니다. –