2012-10-25 39 views
1

我正在將我的輸出從MySQL控制檯中的查詢打印到我的gui應用程序的文本區域中。現在,只要名稱長度大於列的寬度,列就會在文本區域中混亂。如何修復下面的代碼段以使文本區域的輸出看起來統一?在Java文本區域格式化輸出

else if (e.getSource() == executeButton) { 
    //Create a statement 
    try{ 
     String commandString = enterSQLText.getText(); 
     Statement statement = conn.createStatement(); 
     //Execute a statement 
     ResultSet resultSet = statement.executeQuery(commandString); 
     //Process query results 
     ResultSetMetaData metaData = resultSet.getMetaData(); 
     int numberOfColumns = metaData.getColumnCount(); 

     for(int i = 1; i<= numberOfColumns; i++){ 
      executionResultText.append(metaData.getColumnName(i) + "\t"); 
      System.out.printf("%20s\t", metaData.getColumnName(i)); 
     } 
     executionResultText.append("\n"); 
     System.out.println(); 

     while (resultSet.next()){ 
      for (int i = 1; i <= numberOfColumns; i++){ 
       executionResultText.append(resultSet.getObject(i).toString() + "\t"); 
       System.out.printf("%20s\t", resultSet.getObject(i)); 
      } 
      executionResultText.append("\n"); 
      System.out.println(); 
     } 
     System.out.println("Execute Button Works!"); 
    } 
    catch (Exception h){ 
     h.printStackTrace(); 
    } 
} 

我很感激幫助。

+0

你可以使用一個表,而不是文本區域。 JTables擅長顯示來自數據庫表的數據。 – case1352

回答

1

最好使用其中一個記錄器爲您進​​行格式設置。如果不使用某種文本格式庫,則很難在控制檯中控制製表符間隔和垂直列對齊。記錄器可以選擇性地將輸出存儲在一個文本文件中,您可以使用它來查看。它也可以做格式化輸出的很好的工作。

這裏是最流行的記錄:

http://www.slf4j.org/

如果你必須輸出到安慰自己,你需要使用一個控制檯輸出庫。看看這個,看起來很有希望:

http://www.codeproject.com/Articles/24896/JLib-A-Windows-Console-Library

+0

這些是非常複雜的解決方案。我很驚訝,這不是一個簡單的解決方法: -/ – PeerPressure

+0

它不需要過分奢侈,它只需要顯示列中的輸出沒有它們重疊,謝謝你的建議。 – PeerPressure

+0

不幸的是,標準社區忽略了控制檯界面。我能想到的唯一標準是VT200/220,MS-DOS並不關心這一點,所以我們沒有控制檯驅動程序。 –