繁体   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