2016-10-14 3 views
1

私はこの記事の一部を私が書いています。JTextAreaを消去して、新しいテキストを設定してください

現在、このスニペットは、私のArrayList(カート)にあるすべてのアイテムを出力します。

JButton btnShowCart = new JButton("Show cart"); 
    btnShowCart.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 

      for (int i = 0; i < listWithItems.size(); i++) { 
       txtBasket.setText(txtBasket.getText() + listWithItems.get(i) + "\n");  
      } 

     } 
    }); 

「ショーカート」をクリックするたびに、私のリストに含まれているものがわかります。これは完璧ですが、JTextAreaがArrayListからテキストを再設定する前にテキストを消去したい場合は、古いテキストも表示されます。どういうわけか可能ですか?私は再칠を試みたが、それはそのトリックをしなかった。私もsetText( "")を試しましたが、私はarraylistを使ってテキストを設定する前と後でsetText( "")を入れてみましたが、全くテキストを表示できませんでした。

答えて

2

ループ内のtxtBasket.getText()は、毎回前のテキストを取得するので、呼び出さないでください。これはJAVA/SWINGある場合は、多分あなたは、このようなSwingUtilitiesを呼び出す必要が

JButton btnShowCart = new JButton("Show cart"); 
    btnShowCart.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 

      String content = ""; 
      for (int i = 0; i < listWithItems.size(); i++) { 
       content += listWithItems.get(i) + "\n" ;  
      } 
      txtBasket.setText(content); 
     } 
    }); 
+0

ああ、

はこのような何かを試してみてください!ありがとう。 私は、ループ内にgetText()を入れてはいけないはずです。優れた説明@フェリックス。 – Charles

0

:働い

String text = ""; 
for (int i = 0; i < listWithItems.size(); i++) { 
     text += txtBasket.getText() + listWithItems.get(i) + "\n"; 
} 
// update GUI  
SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
       statusLabel.setText(text); 
     } 
}); 
関連する問題