2014-02-21 36 views
0

問題是,在運行時當新標籤被創建時,它會在JPanel上顯示,但包含之前創建的標籤。JPanel中的JLabel,運行時新標籤包含以前的標籤

該代碼將文本轉換爲比特單行本,像「HI」轉換爲

enter image description here

但是當另一個文本被轉換,如「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(); 
    } 

謝謝,

+0

請爲我們澄清您的問題。至少對我而言,你的問題很不明確。順便說一句,您不應該將MouseListeners添加到JButtons,而是添加ActionListeners。 MouseListener行爲不適合按鈕。 –

+1

你有沒有*從面板上移除舊標籤?考慮編寫'panel2Tab2.removeAll()',然後添加新標籤 – Marco13

+0

謝謝。我不想刪除舊標籤,我只是希望新標籤不要複製以前的標籤。所以清除bitsString就是答案。 @Hovercraft Full of Eels,我會用ActionListeners謝謝你。 –

回答

1

無論getBitsString()何時返回,您總是追加它,但您永遠不會清除它。當你想改變它的內容時,你應該先清除它。

+0

非常感謝。那工作。 –

1

正是因爲這行:

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

你追加新的比特串,然後你getBitsString()的結果添加到您的標籤。