SWT MessageBox 关闭按钮被禁用
SWT MessageBox close button is disabled
我正在为应用程序 UI 使用 Java SWT。当我使用 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);
这就是 Java SWT 封装的 MessageBox 的真正 Win32 API 代码。并且不允许启用 [X] 按钮。你可以在这里阅读:
Enable Close button in Win 32 Message Box
仅当您添加 SWT.CANCEL 按钮时才会启用,然后 [X] 的作用相同。
我正在为应用程序 UI 使用 Java SWT。当我使用 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);
这就是 Java SWT 封装的 MessageBox 的真正 Win32 API 代码。并且不允许启用 [X] 按钮。你可以在这里阅读:
Enable Close button in Win 32 Message Box
仅当您添加 SWT.CANCEL 按钮时才会启用,然后 [X] 的作用相同。