Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
1 / 1 / 4
Регистрация: 28.09.2011
Сообщений: 113

JList сделать метод на удаление дубликатов

25.07.2012, 00:12. Показов 1674. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется Jlist, туда перекидывается значение из другого Jlist, но проблема в том, что если нажать ещё раз , то и добавиться в другой Jlist тоже.
Как избавиться от этого?

Добавлено через 11 минут
Цитата Сообщение от jvov Посмотреть сообщение
Имеется Jlist, туда перекидывается значение из другого Jlist, но проблема в том, что если нажать ещё раз , то и добавиться в другой Jlist тоже.
Как избавиться от этого?
Нужно написать метод, что бы он проверял на дубликаты и если есть удалял их, как это сделать?

Добавлено через 4 часа 32 минуты
Цитата Сообщение от jvov Посмотреть сообщение
Имеется Jlist, туда перекидывается значение из другого Jlist, но проблема в том, что если нажать ещё раз , то и добавиться в другой Jlist тоже.
Как избавиться от этого?

Добавлено через 11 минут


Нужно написать метод, что бы он проверял на дубликаты и если есть удалял их, как это сделать?
Неужели, никто подсказать не сможет?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.07.2012, 00:12
Ответы с готовыми решениями:

Удаление элементов из списка JList
Как удалить элементы из списка, выбранные пользователем? Указываю параметр у созданного списка DefaultListModel model_ = new...

Удаление дубликатов + ассинхронное удаление из другой таблицы
Есть две таблицы tbl_content : id, title tbl_pics : id, picname 1. Нужно удалить дубликаты "title" из таблицы...

Удаление дубликатов
Вопрос, как удалить дубликаты в столбце. Интересует удаление и дубликатов, и оригиналов дубликатов. Другими словами, если есть два...

6
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
25.07.2012, 00:54
ну вытащите ListModel при помощи getModel() и пробегитесь по нему и поудаляйте дубликаты
1
1 / 1 / 4
Регистрация: 28.09.2011
Сообщений: 113
25.07.2012, 01:17  [ТС]
Цитата Сообщение от mutagen Посмотреть сообщение
ну вытащите ListModel при помощи getModel() и пробегитесь по нему и поудаляйте дубликаты
Вот у меня, что-то наподобие такого кода, только не работает ничего и я запутался.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class SelectPlayersListListener implements ListSelectionListener {
 
    private StartGameWindow startGameWindow;
 
    public SelectPlayersListListener(StartGameWindow startGameWindow) {
        this.startGameWindow = startGameWindow;
    }
 
    @Override
    public void valueChanged(ListSelectionEvent e) {
        if (!e.getValueIsAdjusting()) {
            String a = startGameWindow.getListOfPlayers().getSelectedValue()
                    .toString();
            ArrayList<String> list = new ArrayList<String>();
            
        ListModel model = startGameWindow.listOfPlayers.getModel();
            for (int i = 0; i<=model.getSize(); i++){
                if (a == model.getElementAt(i)){
                    model.remove(i);
                }
            }
            list.add(a);
            startGameWindow.setListWhoWantPlay(list);
            
            }
        }
    
    
    }
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
25.07.2012, 10:46
не знаю что у вас в классе StartGameWindow, поэтому заглушка внизу
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.util.HashSet;
import java.util.Set;
 
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.ListModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
 
public class SelectPlayersListListener implements ListSelectionListener {
 
    private StartGameWindow startGameWindow;
 
    public SelectPlayersListListener(StartGameWindow startGameWindow) {
        this.startGameWindow = startGameWindow;
    }
 
    @Override
    public void valueChanged(ListSelectionEvent e) {
        if (!e.getValueIsAdjusting()) {
            DefaultListModel model = (DefaultListModel) startGameWindow.listOfPlayers.getModel();
            Set was = new HashSet();
            for (int i = 0; i < model.getSize(); i++) {
                if(was.contains(model.getElementAt(i))) {
                    model.remove(i);
                } else {
                    was.add(model.getElementAt(i));
                }
            }
        }
    }
 
}
 
class StartGameWindow {
 
    public JList listOfPlayers;
 
    public void setListWhoWantPlay(DefaultListModel list) {
        listOfPlayers.setModel(list);
    }
 
    public JList getListOfPlayers() {
        return listOfPlayers;
    }
 
}
чтобы не создавать зря сеты на каждый эвент, можно вынести его в переменные класса и просто чистить перед завершением valueChanged
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.util.HashSet;
import java.util.Set;
 
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
 
public class SelectPlayersListListener implements ListSelectionListener {
 
    private StartGameWindow startGameWindow;
    private Set was = new HashSet();
 
    public SelectPlayersListListener(StartGameWindow startGameWindow) {
        this.startGameWindow = startGameWindow;
    }
 
    @Override
    public void valueChanged(ListSelectionEvent e) {
        if (!e.getValueIsAdjusting()) {
            DefaultListModel model = (DefaultListModel) startGameWindow.listOfPlayers.getModel();
            for (int i = 0; i < model.getSize(); i++) {
                if (was.contains(model.getElementAt(i))) {
                    model.remove(i);
                } else {
                    was.add(model.getElementAt(i));
                }
            }
            was.clear();
        }
    }
 
}
 
class StartGameWindow {
 
    public JList listOfPlayers;
 
    public void setListWhoWantPlay(DefaultListModel list) {
        listOfPlayers.setModel(list);
    }
 
    public JList getListOfPlayers() {
        return listOfPlayers;
    }
 
}
0
1 / 1 / 4
Регистрация: 28.09.2011
Сообщений: 113
26.07.2012, 00:08  [ТС]
Цитата Сообщение от mutagen Посмотреть сообщение
не знаю что у вас в классе StartGameWindow, поэтому заглушка внизу
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.util.HashSet;
import java.util.Set;
 
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.ListModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
 
public class SelectPlayersListListener implements ListSelectionListener {
 
    private StartGameWindow startGameWindow;
 
    public SelectPlayersListListener(StartGameWindow startGameWindow) {
        this.startGameWindow = startGameWindow;
    }
 
    @Override
    public void valueChanged(ListSelectionEvent e) {
        if (!e.getValueIsAdjusting()) {
            DefaultListModel model = (DefaultListModel) startGameWindow.listOfPlayers.getModel();
            Set was = new HashSet();
            for (int i = 0; i < model.getSize(); i++) {
                if(was.contains(model.getElementAt(i))) {
                    model.remove(i);
                } else {
                    was.add(model.getElementAt(i));
                }
            }
        }
    }
 
}
 
class StartGameWindow {
 
    public JList listOfPlayers;
 
    public void setListWhoWantPlay(DefaultListModel list) {
        listOfPlayers.setModel(list);
    }
 
    public JList getListOfPlayers() {
        return listOfPlayers;
    }
 
}
чтобы не создавать зря сеты на каждый эвент, можно вынести его в переменные класса и просто чистить перед завершением valueChanged
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.util.HashSet;
import java.util.Set;
 
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
 
public class SelectPlayersListListener implements ListSelectionListener {
 
    private StartGameWindow startGameWindow;
    private Set was = new HashSet();
 
    public SelectPlayersListListener(StartGameWindow startGameWindow) {
        this.startGameWindow = startGameWindow;
    }
 
    @Override
    public void valueChanged(ListSelectionEvent e) {
        if (!e.getValueIsAdjusting()) {
            DefaultListModel model = (DefaultListModel) startGameWindow.listOfPlayers.getModel();
            for (int i = 0; i < model.getSize(); i++) {
                if (was.contains(model.getElementAt(i))) {
                    model.remove(i);
                } else {
                    was.add(model.getElementAt(i));
                }
            }
            was.clear();
        }
    }
 
}
 
class StartGameWindow {
 
    public JList listOfPlayers;
 
    public void setListWhoWantPlay(DefaultListModel list) {
        listOfPlayers.setModel(list);
    }
 
    public JList getListOfPlayers() {
        return listOfPlayers;
    }
 
}
Что то не получается, а потом HashSet сетать в модель?

у меня этот метод startGameWindow.setListWhoWantPlay(list) записывал в JList

Java
1
2
3
4
5
6
7
8
public void setListWhoWantPlay(ArrayList<String> list)
    {
        for (int i = 0; i < list.size(); i++)
        {
            model2.add(i, list.get(i));
           
        }
    }
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
26.07.2012, 01:29
Цитата Сообщение от jvov Посмотреть сообщение
Что то не получается, а потом HashSet сетать в модель?
вы прочитайте мой код, где вы там видите сетание хашсета??? он нужен просто как воспомогательный контейнер, там может быть и любой List или Map

Добавлено через 43 секунды
Цитата Сообщение от jvov Посмотреть сообщение
у меня этот метод startGameWindow.setListWhoWantPlay(list) записывал в JList
у вас записывает, а у меня совершенно другой подход
1
1 / 1 / 4
Регистрация: 28.09.2011
Сообщений: 113
26.07.2012, 01:50  [ТС]
Цитата Сообщение от mutagen Посмотреть сообщение
вы прочитайте мой код, где вы там видите сетание хашсета??? он нужен просто как воспомогательный контейнер, там может быть и любой List или Map

Добавлено через 43 секунды

у вас записывает, а у меня совершенно другой подход
Все - разобрался. Спасибо большое. Все заработало.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.07.2012, 01:50
Помогаю со студенческими работами здесь

Удаление дубликатов
namespace ConsoleApp3 { class Program { static void Main(string args) { int c; ...

Удаление дубликатов
Всем привет Пробую зачистить строки от повторений Текст строк примерно такой RRs.Mmm.sss.20190124_185954.txt 19:00:01...

Удаление дубликатов
Как удалить из базы дубликаты, т.е. primati key у них отличаются, а отстальный данные совпадают?

Удаление дубликатов
Как с помощью макроса удалить дубликаты( не одну одинаковую линию из двух как в Экселе) а две Пример: 123456 234516 123456 Должна...

Удаление дубликатов
Как организовать удаление дубликатов формулой? Такой странный вопрос.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru