2012-01-28 14 views
1

JTextAreaに問題があります... DBマネージャー経由でデータベースに接続し、結果セット付きのハッシュテーブルを取得するメソッドがあります。その後、私はコンソールに値を表示した。今度はコンソールを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'メソッドを使ってそれをテキストエリアに設定します。 – Ahamed

+0

'PROPERTY TABLE:'このデータは 'JTable'の方が良いと思われます。 (そして、ユーザーにSHOUTをしないでください。SwingはGUIの要素に注意を向けるより微妙な方法を持っています) –

答えて

7

System.out.println()の代わりにsetText(String t)メソッドを使用するだけでJTextAreaオブジェクトを作成できます。

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クラスにあります...このメソッドからどのようにデータを転送できますか?テキストエリア? – Glebus

+0

あなたの 'viewSystemProperties()'メソッドでは、 'string'を返す代わりにvoidを返します。そして、GUIクラスに 'viewSystemProperties()'メソッドを含むクラスのオブジェクトを作成し、そのメソッドにアクセスするよりも、例:textArea.setText(myobj.viewSystemProperties()); – RanRag

+2

「StringBuilder」に言及する最初の答えであるため+1。 –

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を1つ作成して、それぞれSystem.out.println()を追加し続けます。最後にsetText()メソッドを使用してStringBuffer'stoString()の値を設定します。

+0

StringBuilderは、主にスレッドセーフではないため、StringBufferより効率的です。単一のスレッド(ここのような)で作業するときは、StringBuilderが必要です。 –

+0

はい、私もAhmedのコメントに+1を与えたことに同意します。しかし、私は彼の答えを繰り返すことができないので、私は第2の意見として別の答えを与えた。 – Lucifer

関連する問題