我使用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]以相同的方式操作。