JPanel中的JLabel,运行时新标签包含以前的标签
问题描述:
问题是,在运行时当新标签被创建时,它会在JPanel上显示,但包含之前创建的标签。JPanel中的JLabel,运行时新标签包含以前的标签
该代码将文本转换为比特单行本,像“HI”转换为
但是当另一个文本被转换,如“OK”的位标签同时显示“HI”和“OK”
这是从MouseHandler类中的mouseClicked方法中的代码
//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();
}
谢谢,
答
无论getBitsString()
何时返回,您总是追加它,但您永远不会清除它。当你想改变它的内容时,你应该先清除它。
+0
非常感谢。那工作。 –
答
正是因为这行:
if(i!=0 && (i%Control.valves==0)){setBitsString(getBitsString().append("<br />")
你追加新的比特串,然后你getBitsString()的结果添加到您的标签。
请为我们澄清您的问题。至少对我而言,你的问题很不明确。顺便说一句,您不应该将MouseListeners添加到JButtons,而是添加ActionListeners。 MouseListener行为不适合按钮。 –
你有没有*从面板上移除旧标签?考虑编写'panel2Tab2.removeAll()',然后添加新标签 – Marco13
谢谢。我不想删除旧标签,我只是希望新标签不要复制以前的标签。所以清除bitsString就是答案。 @Hovercraft Full of Eels,我会用ActionListeners谢谢你。 –