2016-10-14 3 views
1

Итак, у меня есть этот фрагмент части программного обеспечения, которую я пишу.Очистка JTextArea, установить новый текст

В данный момент этот фрагмент выводит все элементы, которые у меня есть в моем массиве ArrayList (cart).

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 (""), но это просто заставило меня не показывать какой-либо текст вообще, хотя я попытался поместить setText ("") до/после того, как я установил текст из моего arraylist.

ответ

2

Вы не должны вызывать txtBasket.getText() в цикле, так как каждый раз вы получите предыдущий текст.

попробовать что-то вроде этого:

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() внутри цикла. Отличное объяснение @felix. – Charles

0

Если это JAVA/SWING, может быть, вам нужно позвонить SwingUtilities так:

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); 
     } 
}); 
Смежные вопросы