2012-01-28 68 views
1

我有一個JTextArea的問題...我有一個方法,通過數據庫管理器連接到數據庫,並獲得哈希表結果集。之後,我在控制檯中打印了這些值。現在我必須將控制檯更改爲JTextArea。這是從我的類中的方法:如何使用System.out.println()方法填充JTextArea?

public void viewSystemProperties(){ 

    PropertiesDTO pdto = new PropertiesDTO(); 
    PropertiesManager pMng = new PropertiesDBmanager(); 

    pdto.setPropDTO(pMng.getProperties().getPropDTO()); 
    Iterator<String> it = pdto.getPropDTO().keySet().iterator(); 

    String key = null, value = null; 

    System.out.println("\t\t**************************"); 
    System.out.println("\t\t* PROPERTY TABLE:  *"); 
    System.out.println("\t\t**************************\n"); 

    while (it.hasNext()){ 

     key = (String)it.next(); 
     value = pdto.getPropDTO().get(key); 
     System.out.println(" " + key + "\t-------------------\t 
             ["+value+"]\n");  

    }// while 

}// viewSystemProperties() 

的System.out.println相反的必須在JTextArea中打印...感謝您的幫助。

+3

使用'StringBuilder'來形成整個輸出並使用'setText'方法將其設置爲textarea。 – Ahamed 2012-01-28 06:24:12

+0

'PROPERTY TABLE:'這個數據好像在'JTable'中會更好。 (請不要在用戶SHOUT,Swing有更微妙的方式來引起對GUI元素的注意。) – 2012-01-28 06:40:02

回答

7

只需創建一個JTextArea對象並使用setText(String t)方法而不是System.out.println()

JTextArea textArea = new JTextArea(); 
textArea.setText("Mystring"); 

這裏你的myString可以使用toString()StringBuilder對象的字符串表示。

StringBuilder sb = new StringBuilder(); 
while (it.hasNext()){ 

key = (String)it.next(); 
value = pdto.getPropDTO().get(key); 

sb.append(" " + key + "\t-------------------\t 
            ["+value+"]\n"); 
} 

現在使用setText()方法。

textArea.setText(sb.toString()); 

JTextArea tutorial Java Swing

+0

JTextArea定位在調用方法的另一個GUI類中...我如何將數據從此方法傳輸到文字區?你的'viewSystemProperties()'方法中的 – Glebus 2012-01-28 06:29:38

+0

你返回的是void而不是返回一個'string'。並且在GUI類中創建包含'viewSystemProperties()'方法的類的對象並訪問該方法。例如:textArea.setText(myobj.viewSystemProperties()); – RanRag 2012-01-28 06:34:54

+2

+1是提到'StringBuilder'的第一個答案。 – 2012-01-28 06:36:15

2

用StringBuffer構建您的JTextArea的內容。之後使用JTextArea.setText()方法來設置內容。

public String viewSystemProperties(){ 

PropertiesDTO pdto = new PropertiesDTO(); 
PropertiesManager pMng = new PropertiesDBmanager(); 

pdto.setPropDTO(pMng.getProperties().getPropDTO()); 
Iterator<String> it = pdto.getPropDTO().keySet().iterator(); 

String key = null, value = null; 
StringBuffer text = new StringBuffer(); 
text.append("\t\t**************************"); 
text.append("\t\t* PROPERTY TABLE:  *"); 
text.append("\t\t**************************\n"); 

while (it.hasNext()){ 

    key = (String)it.next(); 
    value = pdto.getPropDTO().get(key); 

text.append(" " + key + "\t-------------------\t 
             ["+value+"]\n"); 

}// while 
return text.toString 

} // viewSystemProperties()**

textArea.setText(yourClass.viewSystemProperties()); 
1

可以使用StringBuffer類。使一個StringBuffer變量,並繼續追加你已經完成的每個System.out.println()。最後使用setText()方法來設置StringBuffer'stoString()的值。

+0

StringBuilder比StringBuffer更高效,主要是因爲它不是線程安全的。在單線程(如這裏)中工作時,您需要StringBuilder。 – 2012-01-28 06:48:22

+0

是的,我同意這就是爲什麼我還給艾哈邁德的評論+1。但由於我不能重複他的答案,我作爲第二種觀點給出了另一個答案。 – Lucifer 2012-01-28 06:50:25