почему setSize JInternalFrame не работает - PullRequest
1 голос
/ 15 ноября 2011

Я создаю JFrame, добавляю JDesktopPane в JFrame, а затем добавляю JInternalFrame в JDesktopPane, начальный размер JInternalFrame 'такой же, как JDesktopPane.Когда JFrame максимизируется, JDesktopPane также максимизируется, но JInternalFrame не максимизируется.И я хочу, чтобы JInternalFrame максимизировался, когда максимизируется JFrame, поэтому я добавляю WindowStateListener для JFrame, когда максимизируется JFrame. Я буду вызывать метод setSize JInternalFrame, чтобы размер JInternalFrame соответствовал JDesktopPane,код выглядит следующим образом:

addWindowStateListener(new java.awt.event.WindowStateListener() {

   public void windowStateChanged(java.awt.event.WindowEvent evt) {
       jInternalFrame.setSize(jDesktopPane1.getWidth(), 
           jDesktopPane1.getHeight());
   }
});

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

Почему так происходит?

Ответы [ 3 ]

1 голос
/ 15 ноября 2011

Я бы использовал ComponentListener на JDesktopPane и слушал событие componentResized. Затем, когда размер панелей рабочего стола изменяется, либо путем увеличения / восстановления, либо путем изменения размера фрейма вы будете уведомлены.

1 голос
/ 15 ноября 2011

Похоже, вы просто хотите, чтобы JInternalFrame следовал за состоянием JFrame. Почему бы вам просто не установить максимизацию JInternalFrame?

jInternalFrame.setMaximum( true );
1 голос
/ 15 ноября 2011

Вы вызываете repaint для контейнера, который содержит JInternalFrame, JDesktopPane? Если нет, вам следует.

...