package com.towel.swing; import java.awt.Component; import java.awt.Container; import java.awt.Dialog; import java.awt.Frame; import java.awt.Window; import java.lang.reflect.Method; import javax.swing.JDialog; import javax.swing.JOptionPane; public class ModalWindow { public static JDialog createDialog(Component parent, Container content, String title) { JDialog dialog = null; try { Method method = JOptionPane.class.getDeclaredMethod( "getWindowForComponent", Component.class); method.setAccessible(true); Window window = (Window) method.invoke(null, parent); if (window instanceof Frame) dialog = new JDialog((Frame) window, title, true); else dialog = new JDialog((Dialog) window, title, true); dialog.setComponentOrientation(parent.getComponentOrientation()); dialog.setContentPane(content); dialog.pack(); dialog.setLocationRelativeTo(parent); } catch (Throwable t) { t.printStackTrace(); } return dialog; } public static JDialog createDialog(Component parent, String title) { JDialog dialog = null; try { Method method = JOptionPane.class.getDeclaredMethod( "getWindowForComponent", Component.class); method.setAccessible(true); Window window = (Window) method.invoke(null, parent); if (window instanceof Frame) dialog = new JDialog((Frame) window, title, true); else dialog = new JDialog((Dialog) window, title, true); } catch (Throwable t) { t.printStackTrace(); } return dialog; } }