问题在于,在运行时创建新标签时,它会显示在JPanel上,但包含之前创建的标签。
代码将文本转换为位印记,例如“HI”转换为
但是当另一个文本转换为“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();
}
谢谢,
答案 0 :(得分:1)
无论getBitsString()
返回什么,你总是追加它,但你永远不会清除它。当您想要更改其内容时,应首先清除它。
答案 1 :(得分:1)
这是因为这一行:
if(i!=0 && (i%Control.valves==0)){setBitsString(getBitsString().append("<br />")
您追加新的位字符串,然后将getBitsString()的结果添加到标签中。