JPanel中的JLabel,在运行时新标签上包含以前的标签

时间:2014-02-21 13:45:52

标签: java swing jpanel jlabel

问题在于,在运行时创建新标签时,它会显示在JPanel上,但包含之前创建的标签。

代码将文本转换为位印记,例如“HI”转换为

enter image description here

但是当另一个文本转换为“OK”时,位标签显示“HI”和“OK”

这是mouseClicked方法中MouseHandler类的代码

 //Convert button is clicked.
    if(event.getSource().equals(getButton1Tab2()))
    {
        //convert text to image.
        TextOverlay textOverlay = new TextOverlay(getTextArea1Tab2().getText());

        //save image bits in ArrayList.
        for(int i=0; i<textOverlay.imageBits.length;i++)
        {
            //add new line after printing each line of bits (bit line length = image width)
            if(i!=0 && (i%Control.valves==0)){setBitsString(getBitsString().append("<br />"));}

            //add bit to ArrayList
            setBitsString(getBitsString().append(textOverlay.imageBits[i]));
        }
        //add new label to ArrayList of labels, the new label is bits offprint of the text's image.
        labelsArray.add(new JLabel("<html>"+getBitsString()+"</html>"));

        labelsArray.get(labelsArray.size()-1).addMouseListener(this);
        //show binary equivalent on screen
        panel2Tab2.add(labelsArray.get(labelsArray.size()-1));
        panel2Tab2.validate();
        panel2Tab2.repaint();
    }

谢谢,

2 个答案:

答案 0 :(得分:1)

无论getBitsString()返回什么,你总是追加它,但你永远不会清除它。当您想要更改其内容时,应首先清除它。

答案 1 :(得分:1)

这是因为这一行:

if(i!=0 && (i%Control.valves==0)){setBitsString(getBitsString().append("<br />")

您追加新的位字符串,然后将getBitsString()的结果添加到标签中。