Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Всплывающие окно


Автор: Vitello 19.3.2008, 16:00
Суть в следующем. У меня есть табли которая выводит в одной из колонок картинки. Для этого я переписал Renderer, который в методе getTableCellRendererComponent возвращает объект класа наследуемого от JPanel. А уже этот клас прорисовывает картинку. Картинки маленькие - ресайзы. Мне по клику на картинку в таблице нужно вывести всплывающие окно с картинкой попобольше. 

Для этого переписаный Editor

Код

public Component getTableCellEditorComponent(JTable table, Object value, 
        boolean flag, int row, int col)
{

       .........................
       JWindow popupFrame = new JWindow();
    if ( this.value.getImageCount() > 1 ){
        popupFrame.setSize(150,170);
    } else {
        popupFrame.setSize(150,150);
    }

    popupPanel = new ShowImagePanel(this.value.getCurrentImage(), this, true);
    popupPanel.setImageInfo(createStringInfo(this.value));
    popupFrame.setContentPane(popupPanel);
    popupFrame.setVisible(true);

        ...........................
    
    return result;

}


popupFrame - всплывающие окно
popupPanel - панэль, отображающая картинку.

Проблемы в следующем:

1. при ресайзе главной формы сбивается позиционировани поп-ап окна относительно ячейки таблицы.

2. Я хочу привязать попап окно к ячейке.   Если сделать popupFrame.setAlwaysOnTop(true); то при минимизации основной формы, переключении окна, popupFrame останется поверх окон;
Если сделать popupFrame.setAlwaysOnTop(false);  то при переключении окон и возвращении назад к моему приложению, главная форма закрывает попап окно

Автор: LSD 19.3.2008, 16:18
По идее попап вообще должен пропадать при потере фокуса (ресайз, свертывание).

Автор: Vitello 19.3.2008, 17:45
Я назвал его ПОПАП - потому что он всплывает по требованию. Реализую я его сам на основе JWindow. Я это делаю потому что на этом окне еще есть кнопки действия которых я обрабатываю. Если юзать PopupFactory - то всплывающие окно исчезает при клике.

Автор: LSD 20.3.2008, 13:10
Вешай на родительскую таблицу литенер, который будет при изменении размеров или движении таблицы, перемещать твой попап. И листенер на родительское окно который будет скрывать/свертывать твой попап при свертывании родительского окна, и перемещать при его перемещении.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)