SWT MessageBox关闭按钮被禁用



我使用Java SWT作为应用程序UI。当我使用SWT MessageBox向用户提问时,我使用:

MessageBox messageBox = new MessageBox(new Shell(Display.getCurrent()), SWT.YES | SWT.NO | SWT.ICON_QUESTION);

但当对话框打开时,关闭(红色X按钮)将被禁用。我可以做些什么来启用它?

我很抱歉,但这是不可能的。通过查看Java SWT的源代码,我调查了:
src/org/eclipse/swt/widgets/MessageBox.java第206行:

OS.MessageBox (hwndOwner, buffer1, buffer2, bits);

它使用JNI运行本机C代码:src/os.c第8939行:

rc = (jint)MessageBoxA((HWND)arg0, (LPSTR)lparg1, (LPSTR)lparg2, arg3);

因此,这是真正的Win32 API MessageBox代码,由Java SWT封装。并且不允许启用[X]按钮。您可以在此处阅读:在Win 32消息框中启用关闭按钮
只有当您添加SWT.CANCEL按钮时,才会启用它,然后[X]以相同的方式操作。

最新更新