Невидимый JComboBox - PullRequest
       9

Невидимый JComboBox

0 голосов
/ 19 апреля 2010

У меня маленькая проблема. У меня есть JComboBox для JDialog, но они не отображаются ... Более того, я могу их выбрать (см. Рис.).

альтернативный текст http://grab.by/3RwI

А вот и мой код:

for(int i = 0; i<11; i++)
    {
        JComboBox jC = new JComboBox(posteList);
        jC.setBounds(300, posY, 100, 20);
        jC.setSelectedIndex(0);
        this.add(jC);
        posY += 30;
    }

У вас есть идея решить эту проблему? Спасибо!

Ответы [ 3 ]

2 голосов
/ 19 апреля 2010

Вы не должны вызывать setBounds(), вам нужно использовать макет для управления позициями компонентов

0 голосов
/ 26 июля 2012

Я нашел решение проблемы. Если вы используете JPanel для GlassPane, поверх стеклянной панели вы используете JInternalFrame. Если вы пытаетесь нарисовать JFileChooser или JCombobox, иногда всплывающие окна не сворачиваются (я имею в виду, что они опускаются, но опускаются под JPanel). Здесь - отчет об ошибках от Oracle: Когда мой коллега обнаружил это сообщение об ошибке, мои глаза сияли. Поэтому я реализовал решение об ошибке в JFrame, тогда всплывающие окна работали нормально. Шаги следующие:

  1. Сначала вам нужно создать JFrame.
  2. Реализация исправления (взлома) из сообщения об ошибке.
  3. Вы должны добавить JPanel (GlassPane) в корневую панель JFrames, например: frame.getRootPane().setGlassPane(panel);
  4. Когда вы добавляете JComboBox, настройте это: comboBox.setLightWeightPopupEnabled(true)

Надеюсь, это исправит и твои проблемы. У меня это сработало.

0 голосов
/ 04 марта 2011

Вызовите метод doLayout() вашего JComboBox после ручной установки границ. Тогда поле со списком появится правильно. E.g.:

JPanel panel = new JPanel();
panel.setLayout(null);

String[] items = {"hello","goodbye","etc"};
JComboBox cbox = new JComboBox(items);
panel.add(cbox);
cbox.setBounds(0, 0, 100, 20);
cbox.doLayout(); // force the JComboBox internals to use your bounds
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...