問題是,在運行時當新標籤被創建時,它會在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();
}
謝謝,
請爲我們澄清您的問題。至少對我而言,你的問題很不明確。順便說一句,您不應該將MouseListeners添加到JButtons,而是添加ActionListeners。 MouseListener行爲不適合按鈕。 –
你有沒有*從面板上移除舊標籤?考慮編寫'panel2Tab2.removeAll()',然後添加新標籤 – Marco13
謝謝。我不想刪除舊標籤,我只是希望新標籤不要複製以前的標籤。所以清除bitsString就是答案。 @Hovercraft Full of Eels,我會用ActionListeners謝謝你。 –