Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/27: Рейтинг темы: голосов - 27, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 21.12.2009
Сообщений: 25

Значение jComboBox

30.07.2012, 11:51. Показов 5358. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый!
Джаву изучаю не по книжкам, методом проб, т.к. перехожу с .Net (C#) и есть между ними много похожего. Так вот в Шарпе список - Combobox держал в себе элементы которые в свою очередь несли в себе значение display и внутреннее значение, например id. Т.е. заполняем комбобох из БД, куда кладем id-шник записи и например поле name для отображения пользователю.
В Java я так понимаю значение только одно, т.е. то что пользователь видит, что не очень удобно. Если это не так подскажите как положить в комбобокс айтем так как описанно выше.
И такая же проблема с jTable. Дайте достоверную инфу плиз!!!
Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.07.2012, 11:51
Ответы с готовыми решениями:

Как получить значение JComboBox?
У меня есть таблица (JTable) и JComboBox. Когда я перехожу с одной строки таблицы на другой у меня на JComboBox значение меняется. Как...

Как считать значение из выбранного элемента JComboBox?
Здравствуйте! Столкнулся с проблемой, нужно считать название выбранного элемента из редактируемого JComboBox. Дело в том, что просто...

JComboBox
помогите с jcombobox разобраться.На примитивном уровне. Вот выбираем число Два из одного списка, число Три из другого списка. Ответ: 5 ...

4
Добрый самаритянин
 Аватар для John_Pa9JIbHuK
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
30.07.2012, 12:31
Вам нужно для себя самому написать модель данных для jCombobox.
Для этого нужно реализовать AbstractListModel для своей модели, потом применить эту модель к своему jCombobox.

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
48
49
50
51
52
53
54
55
56
57
58
59
60
import java.util.Vector;
 
import javax.swing.AbstractListModel;
import javax.swing.MutableComboBoxModel;
 
 
public class DataBaseListModel extends AbstractListModel implements MutableComboBoxModel{
    
    private Vector dataRow;
    private Vector idRow;
 
    @Override
    public Object getElementAt(int arg0) {
        // TODO Auto-generated method stub
        return null;
    }
 
    @Override
    public int getSize() {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public Object getSelectedItem() {
        // TODO Auto-generated method stub
        return null;
    }
 
    @Override
    public void setSelectedItem(Object arg0) {
        // TODO Auto-generated method stub
        
    }
 
    @Override
    public void addElement(Object arg0) {
        // TODO Auto-generated method stub
        
    }
 
    @Override
    public void insertElementAt(Object arg0, int arg1) {
        // TODO Auto-generated method stub
        
    }
 
    @Override
    public void removeElement(Object arg0) {
        // TODO Auto-generated method stub
        
    }
 
    @Override
    public void removeElementAt(int arg0) {
        // TODO Auto-generated method stub
        
    }
 
}
Добавлено через 6 минут
Где как вы поняли dataRow - массив с данными, idRow - массив с ID
1
0 / 0 / 0
Регистрация: 21.12.2009
Сообщений: 25
30.07.2012, 14:46  [ТС]
Ок! Но как и где мне задовать для комбобокса, что именно dataRow нужно брать для отображения, а idRow возвращать например при getSelectedItem()???
0
Добрый самаритянин
 Аватар для John_Pa9JIbHuK
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
30.07.2012, 15:32
getSelectedItem()
Будет использоваться для отображения
Вам нужно написать тут свой метод, например getSelectedItemId() который будет возвращать id

Добавлено через 15 минут
Вот тебе сырое решение
Модель данных:
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;
 
import javax.swing.AbstractListModel;
import javax.swing.MutableComboBoxModel;
 
 
public class DataBaseListModel extends AbstractListModel implements MutableComboBoxModel{
    
    private Vector<Object> dataRow;
    private Vector<Object> idRow;
    private Object selectedData;
    private Object selectedId;
    
    
    public DataBaseListModel() {
        dataRow = new Vector<Object>();
        idRow = new Vector<Object>();
        selectedData = null;
        selectedId = null;
    }
 
    @Override
    public Object getElementAt(int index) {
        return dataRow.get(index);
    }
 
    @Override
    public int getSize() {
        return dataRow.size();
    }
 
    @Override
    public Object getSelectedItem() {
        return selectedData;
    }
 
    @Override
    public void setSelectedItem(Object item) {
        selectedData = item;
        selectedId = idRow.get(dataRow.indexOf(item));
    }
 
    @Override
    public void addElement(Object element) {
        dataRow.add(element);
    }
 
    @Override
    public void insertElementAt(Object arg0, int arg1) {
        // TODO Auto-generated method stub
        
    }
 
    @Override
    public void removeElement(Object arg0) {
        // TODO Auto-generated method stub
        
    }
 
    @Override
    public void removeElementAt(int arg0) {
        // TODO Auto-generated method stub
        
    }
    
    //Это наш метод получения ID выбранного элемента
    public Object getSelectedItemId(){
        return selectedId;
    }
    
    public void addElement(Object id, Object data){
        idRow.add(id);
        dataRow.add(data);
    }
 
}
Новый компонент для базы данных
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import javax.swing.JComboBox;
 
 
public class JDataBaseComboBox extends JComboBox{
    public JDataBaseComboBox() {
        super(new DataBaseListModel());
    }
    
    public Object getSelectedItemId(){
        DataBaseListModel model = (DataBaseListModel) getModel();
        return model.getSelectedItemId();
    }
    
    public void addElement(Object id, Object data){
        DataBaseListModel model = (DataBaseListModel) getModel();
        model.addElement(id, data);
    }
 
}
Пример использования
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
import java.awt.Dimension;
 
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
 
 
public class Main extends JFrame{
    public Main() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(new Dimension(300, 60));
        JDataBaseComboBox box = new JDataBaseComboBox();
        getContentPane().add(box);
        setVisible(true);
        
        
        
        //Добавим элементы
        
        box.addElement(346121, "Иванов Иван");
        box.setSelectedIndex(0);
        
        JOptionPane.showMessageDialog(this, box.getSelectedItemId());
        
        
    }
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        new Main();
 
    }
 
}
Можно сделать красивее используя Map, но это уже решать тебе
1
0 / 0 / 0
Регистрация: 21.12.2009
Сообщений: 25
30.07.2012, 15:42  [ТС]
Спасибо большое!!! Вот это реальная тема, с реальным ответом! ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.07.2012, 15:42
Помогаю со студенческими работами здесь

JComboBox
Выполняю задание по книжке : 1. Создайте Swing-приложение для размещения заказов на покупку велосипедов. Оно должно содержать два...

JTable в JComboBox
Надо чтобы при раскрытии комбобокса в нем отображалась таблица, в которой можно было бы выбрать определенную строку. Подскажите хоть...

Объект в jComboBox
в комбобкс как я понял можно запихать любой объект. Мне сейчас как раз это и надо, чтобы отображалась одна информация, а при выделении...

Ошибка с JComboBox
Из xml-файла вытаскиваю нужные данные и пихаю в ArrayList (раньше был просто массив хрень таже). В другом классе создаю JComboBox с такой...

JComboBox с Key и Value
Мне часто в приложении нужен комбобокс, который можно заполнить из БД(поля: идентификатор, текст), а потом с легкостью получать ID и текст....


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru