2011-11-30 46 views
0

在談到這一點:How do I display something I enter in a JOptionPane on the JFrame?如何從面板中刪除多個標籤?

我做了一個JList,這也輸出我輸入的是什麼,並顯示在JPanel的作爲的JLabel,因爲我所使用的鏈接來完成。但是,我該如何刪除相應的JLabel?非常感謝任何願意幫助的人!

編輯: 我想要做的是當我點擊我的JList中的刪除按鈕,面板上的標籤也將被刪除。

+0

我不確定爲每個條目添加標籤是一個好主意。也許你應該只添加一個標籤並將文本設置爲列表條目的連接。 – Thomas

+0

如果我將所有內容連接成一個標籤,是不是會一次刪除所有內容? D:如果我想選擇要刪除的內容怎麼辦? – alicedimarco

+0

不,你只是從列表中刪除並更新標籤的文本。你不會刪除標籤本身。 – Thomas

回答

1

我會添加一個答案來提供一些代碼,因爲我感覺我的評論被誤解了。

首先,如果沒有必要,請不要爲每個列表條目使用標籤,而應使用一個標籤,其內容是列表條目的串聯。然後在列表更改時更新標籤的文本。

基本上,你有這樣的方法:

private void updateLabel() { 
    StringBuilder text = new StringBuilder(); 
    //this assumes listModel is a DefaultListModel and doesn't contain null values 
    //adapt for other list models and add any necessary checks 
    for(Object entry : listModel.toArray()) { 
    text.append(entry.toString()).append(" "); 
    } 
    label.setText(text.toString()); 
} 

然後偵聽器添加到列表模式:

listModel.addListDataListener(new ListDataListener() {  
    public void intervalAdded(ListDataEvent e) { 
    updateLabel(); 
    } 

    public void intervalRemoved(ListDataEvent e) { 
    updateLabel(); 
    } 

    public void contentsChanged(ListDataEvent e) { 
    updateLabel(); 
    } 
}); 

因此,當你在列表中改變一些東西的標籤會被更新自動。

+0

哇。我會去試試這個。非常感謝! – alicedimarco

+0

我懂了!你太棒了!起初,我得到了一個nullpointerexception,但我編輯了我的代碼,瞧:D非常感謝!救命稻草! – alicedimarco

1

執行以下操作:

String stringToRemove = "CATS"; 
jLabel.setText(jLabel.getText().replace(stringToRemove, ""); 

如果說JLabel設置爲:"CATS DOGCATS APPLE"將取出CATS串後改爲" DOG APPLE"

+0

如果我想根據JList中突出顯示的內容刪除另一個詞,該怎麼辦? D:這可能嗎? – alicedimarco

0

我認爲你正在尋找一個ListModel的。當您實施它時,您可以輕鬆添加/刪除項目。

例如:

// adding 
listModel = new DefaultListModel(); 
listModel.addElement("Jane Doe"); 

list = new JList(listModel); 

// removing (the selected item) 
int index = list.getSelectedIndex(); 
listModel.remove(index); 

如需進一步信息請參閱Tutorial