Как удалить несколько ярлыков с панели? - PullRequest
0 голосов
/ 30 ноября 2011

В отношении этого: Как отобразить что-то, что я ввожу в JOptionPane на JFrame?

Я создал JList, который также выводит то, что я ввел, и он отображается на JPanel как JLabels, как то, что я сделал, используя ссылку. Тем не менее, как мне удалить соответствующие JLabels на этот раз? Большое спасибо всем, кто поможет!

Edit: Что я хочу сделать, так это то, что когда я нажимаю кнопку удаления в моем JList, ярлык на панели также будет удален.

Ответы [ 4 ]

1 голос
/ 30 ноября 2011

Я добавлю ответ, чтобы предоставить код, так как у меня такое ощущение, что мои комментарии неправильно поняты.

Во-первых, если в этом нет необходимости, не используйте метку для каждой записи списка, а используйте одну метку, содержимое которой является объединением записей списка. Затем обновляйте текст метки при каждом изменении списка.

По сути, у вас есть такой метод:

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();
  }
});

Таким образом, при изменении чего-либо в списке метка будет обновляться автоматически.

1 голос
/ 30 ноября 2011

1) положить туда JPopupMenu вместо JOptionPane

2) добавить список выбора слушателя до JList , установить модель выбора

3) проверить, если SelectedIndex> -1, если передано, то removeItem(s) от JList или от ListModel

4) лучше было бы добавить JList Items к DefaultListModel

1 голос
/ 30 ноября 2011

Выполните следующие действия:

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

Если вы сказали, что JLabel установлено на: "CATS DOGCATS APPLE", оно будет изменено на " DOG APPLE" после удаления строки CATS

0 голосов
/ 30 ноября 2011

Я думаю, что вы ищете ListModel.Когда вы реализовали это, вы можете легко добавлять / удалять элементы.

Например:

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

list = new JList(listModel);

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

Для получения дополнительной информации см. Учебник .

...