2012-01-28 90 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