簡體   English   中英

清除JTextArea,設置新文本

[英]Clearing JTextArea, set new text

因此,我有正在編寫的軟件片段。

當前,此代碼段輸出我在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設置文本之前清除文本,否則我也看到舊文本。 有可能嗎? 我嘗試了repaint(),但是沒有成功。 我也嘗試過setText(“”),但這使我根本無法顯示任何文本,即使我嘗試在使用arraylist設置文本之前/之后放置setText(“”)。

您不應在循環中調用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);
        }
    });

如果這是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);
        }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM