| Цитата(djGri @ 10.10.2005, 19:00) | | Посмотри как сделать модальные фреймы Sun |
Это урок по созданию Modal Internal Frames. Internal Frame - это не окно в понимании системы, это обычный SWING компонент, просто он эмулирует поведение окна, это не верхний компонент в иерархии как Frame, Window или Applet, он не может выйти за пределы родительского компонента. Может быть конечно такой диалог подойдет, но он совсем не эквивалентен обычному диалогу.
Есть еще один способ, но мне пока не удалось довести его до конца:
| Код | JFrame frame = new JFrame("Frame"); frame.getContentPane().add(new JColorChooser()); frame.pack(); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setVisible(true);
JDialog dialog = new JDialog(frame,"Modal dialog" , true); dialog.setUndecorated(true); dialog.getRootPane().setWindowDecorationStyle(JRootPane.FRAME); dialog.getContentPane().add(new JLabel("Some text")); dialog.pack(); dialog.setLocationRelativeTo(null); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dialog.setVisible(true);
|
в данном случае кнопочки управления окном рисует уже не ОС, а RootPane, вернее его Look And Feel. И если покопаться в тонкостях реализации LaF то я думаю можно заставить его рисовать таки эти кнопочки (ведь для JFrame они рисуются). И таким макаром можно получить полноценный модальный диалог. Если у кого есть время и желание покопаться то велкам |