2015-08-04 2 views
1

Я просмотрел документацию, но не смог найти ответ на этот вопрос ... Очевидно, что использование JComboBox нецелесообразно, если количество полей становится слишком высоким, но, тем не менее, теоретически, JComboBoxes имеет максимальное количество полей?У JComboBoxes есть максимальное количество полей?

+1

Почему бы вам не попробовать? Создайте цикл и продолжайте добавлять параметры –

+3

Что делают методы, подобные 'setSelectedIndex (...)' взять в качестве параметра? – camickr

+0

@camickr Хорошая точка, тогда можно было предположить, что предел будет INTEGER.MAX_VALUE ... – tmnol

ответ

2

Методы, подобные setSelectedIndex(...) и getItemAt(...), принимают в качестве параметра переменную int. Это указывает на то, что ComboBoxModel может поддерживать «теоретический» максимум элементов INTEGER.MAX_VALUE.

Однако элементы также должны быть визуализированы и в конечном итоге отображаться в JScrollPane. Панель прокрутки и вертикальная JScrollBar также используют переменную int, чтобы указать местоположение пикселя полосы прокрутки.

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

Поэтому более разумным «теоретическим» максимумом с использованием стандартных компонентов Swing будет INTEGER.MAX_VALUE/rendered-row-height.

Однако, предположим, вы можете создать пользовательскую панель прокрутки, которая отображает только элементы в блоках. Таким образом, когда вы прокрутите страницу до конца одного блока, вы предварительно загрузите следующий блок. Теоретически это позволит вам отображать все элементы INTEGER.MAX_VALUE в поле со списком.

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

В любом случае я уверен, что все мы согласны, что поле со списком станет непригодным для использования до достижения «теоретического» максимума.

0

Насколько я знаю, как вы сказали, может оказаться полезным использовать другой инструмент интерфейса, если вам придется прокручивать слишком много. Мое рассуждение связано с тем, что вы можете динамически заполнять его, что должно быть настолько гибким, как ваши данные.

+1

Да, есть предел, см. Мой комментарий. Компоновка нецелесообразно использовать до достижения этого предела. – camickr

+0

Я не согласен, метод, на который вы ссылаетесь, устанавливается в индексе (n). Это означает, что количество индексов равно столько, сколько у вас есть в combobox. Если я не пойму вопрос о том, есть ли у каждого индекса предел. –

+1

Вопрос: «сколько элементов вы можете добавить в поле со списком»? Если вам не нравится мой первый пример, то как насчет метода getItemAt (...)? Таким образом, «теоретический» предел контролируется самым большим индексом, который вы можете использовать для прямого доступа к элементу. – camickr

Смежные вопросы