Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JPopupMenu 
:(
    Опции темы
CEKCOT
Дата 12.10.2006, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 4
Регистрация: 16.7.2006
Где: Краснодар

Репутация: нет
Всего: нет



Здравствуйте. В общем есть накая Panel, содержащая таблицу. Эта Panel навешена как Component на PopupMenu. Внутри этой панели на таблицу я повесил другое PopupMenu. Проблема заключается в том, что PopupMenu таблицы не отображается. В общем, можно ли сделать так, чтобы внутри одного PopupMenu можно было вызвать другое?
PM MAIL   Вверх
powerOn
Дата 13.10.2006, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 31
Всего: 159



Впринципе отобразить несколько JPopupMenu возможно. Для этого в методе show для JPopupMenu нужно в качестве компонента указать null, но тогда появится другие проблемы: позиционирование, закрытие и расположение по слоям (меню могут стать недоступными, но отображаемыми). Я думаю, проще перенести Вашу таблицу на отдельный фрейм и показывать его. Так проблем будет меньше.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
cube
Дата 8.5.2007, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 11.4.2007

Репутация: 1
Всего: 3



Цитата(powerOn @ 13.10.2006,  11:18)
Впринципе отобразить несколько JPopupMenu возможно. Для этого в методе show для JPopupMenu нужно в качестве компонента указать null, но тогда появится другие проблемы: позиционирование, закрытие и расположение по слоям (меню могут стать недоступными, но отображаемыми). Я думаю, проще перенести Вашу таблицу на отдельный фрейм и показывать его. Так проблем будет меньше.

У меня возникла проблема с проверкой на показ popup'а

Код

    tableHeader.addMouseListener(new MouseAdapter()
    {
      public void mousePressed(MouseEvent e)
      {
        if(currentButton != null) currentButton.setSelected(false);

        if(isPushTheButton(e.getPoint())) 
        {

// в консоли всегда пишет "mouse pressed on the button!!! pop is visible false" даже когда pop видимый

System.out.println("mouse pressed on the button!!! pop is visible " + pop.isVisible());

          if(pop.isVisible())
          {
            pop.setVisible(false);
          }
          else
          {
            sorter.setSortable(editingColumn,false);
            currentButton.setSelected(!currentButton.isSelected());
            pop.removeAll();

            if(model.getValueAt(0,editingColumn) instanceof Date)
            {
              pop.add(calendar);
              Date value = (Date)columnFilters.get(editingColumn);
              if (value != null) calendar.setDate(value);
            }
            else if(model.getValueAt(0,editingColumn) instanceof String)
            {
              Rectangle rectangle = tableHeader.getHeaderRect(editingColumn);
              textField.setPreferredSize(new Dimension(rectangle.width-23,rectangle.height-5));
              pop.add(textField);
              
              String filter = (String)columnFilters.get(editingColumn);
              if (filter != null) textField.setText(filter);
              else textField.setText("");
              textField.grabFocus();
            }
            pop.show(tableHeader,x+20,0);
          }
        }
      }
    });



видимость pop устанавливаю так

Код

        pop.setVisible(false);


и

Код

            pop.show(tableHeader,x+20,0);


pop в коде глабальная переменная, и нигде заново не создается, если нужно могу привести весь код программы
PM MAIL   Вверх
powerOn
Дата 8.5.2007, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 31
Всего: 159



А что вообще должно происходить? какое поведение необходимо реализовать?


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
cube
Дата 9.5.2007, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 11.4.2007

Репутация: 1
Всего: 3



Цитата(powerOn @ 8.5.2007,  23:41)
А что вообще должно происходить? какое поведение необходимо реализовать?

У меня есть кнопки и они рассположены на JTableHeader и когда на любую кнопку нажимает пользователь происходит показ popup, когда нажимает еще раз, я проверяю показан ли popup, и если показан, то просто его должен скрыть (именно это у меня не получается)

з.ы. кстати я стыбзил у тебя юзербар, ничего? я просто тоже помню, и тоже горжусь!

Это сообщение отредактировал(а) cube - 9.5.2007, 00:03
PM MAIL   Вверх
powerOn
Дата 9.5.2007, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 31
Всего: 159



Цитата(cube @  9.5.2007,  01:01 Найти цитируемый пост)
У меня есть кнопки и они рассположены на JTableHeader и когда на любую кнопку нажимает пользователь происходит показ popup, когда нажимает еще раз, я проверяю показан ли popup, и если показан, то просто его должен скрыть (именно это у меня не получается)


Все правильно выходит. Это нормально поведение JPopupMenu. Ты его показал, а потом кликнул на другой компонент, естественно при этом  меню пропадает. А как тогда его закрывать? 

Цитата(cube @  9.5.2007,  01:01 Найти цитируемый пост)
з.ы. кстати я стыбзил у тебя юзербар, ничего? я просто тоже помню, и тоже горжусь!

 smile

Добавлено через 3 минуты и 38 секунд
впринципе, можно создать некую переменную где хранить состояние: 
1) кнопка нажата -> если переменная истина, то меню отобразилось и переменная стала ложь.
2) кнопка нажата -> если переменная ложь, то меню не отображать и переменная стала истина.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.5604 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.