ハックのためのハック:
プライベート メソッドを呼び出すことで、既存のダイアログのモダリティを変更できます。
java.awt.Dialog.hideAndDisposePreHandler();
このプライベート メソッドを呼び出すには - 例として:
private void executeMethod(final Class<?> clazz, final String methodName, final Object instance)
{
final Method method =
Iterables.getOnlyElement(Iterables.filter(
Arrays.asList(clazz.getDeclaredMethods()), new Predicate<Method>()
{
public boolean apply(final Method method)
{
return method.getName().equals(methodName);
}
}));
method.setAccessible(true);
try
{
method.invoke(instance);
}
catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e)
{
throw Throwables.propagate(e);
}
}
(このコードには Guava が必要です)
そして最後にそれを呼び出します:
final Dialog myDialog = ...;
executeMethod(Dialog.class, "hideAndDisposePreHandler", myDialog);