清除JTextArea,设置新文本

时间:2016-10-14 08:14:26

标签: java arraylist 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" );     
            }

        }
    });

每当我点击“show cart”时,我会看到我的列表包含的内容。这是完美的,但我希望它在JTextArea从我的ArrayList再次设置文本之前清除文本,否则我也会看到旧文本。这有可能吗?我尝试重绘()但是没有做到这一点。我也尝试了setText(“”),但这只是让我无法显示任何文本,即使我在使用我的arraylist设置文本之前/之后尝试放置setText(“”)。

2 个答案:

答案 0 :(得分: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);
        }
    });

答案 1 :(得分: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);
        }
});