java - 按 OK 按钮后 JFace 对话框保持打开状态

标签 java swt

我正在使用 SWT JFace 对话框。

我向“确定”按钮添加了一个监听器,我想在用户单击“确定”按钮后显示一个消息框。 此步骤中的问题是,当我单击“确定”按钮时,外壳就会被释放。我怎样才能防止这种行为?

最佳答案

以下代码将阻止通过“确定”按钮关闭对话框。只是不要在 okPressed() 方法中调用 this.close() 即可:

public static void main(String[] args) {
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());

    new OptionsDialog(shell).open();

    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    display.dispose();
}

private static class OptionsDialog extends Dialog {

    private Composite composite;

    public OptionsDialog(Shell parentShell)
    {
        super(parentShell);
        setShellStyle(parentShell.getStyle() | SWT.CLOSE | SWT.TITLE | SWT.BORDER | SWT.APPLICATION_MODAL);
        setBlockOnOpen(true);
    }

    protected Control createDialogArea(Composite parent) {
        this.composite = (Composite) super.createDialogArea(parent);

        GridLayout layout = new GridLayout(1, false);
        layout.marginHeight = 5;
        layout.marginWidth = 10;

        composite.setLayout(layout);

        createContent();

        return composite;
    }

    private void createContent()
    {
        /* add your widgets */
    }

    protected void configureShell(Shell newShell)
    {
        super.configureShell(newShell);
        newShell.setText("Shell name");
    }

    public void okPressed()
    {
        /* DO NOTHING HERE!!! */
        //this.close();
    }
}

关于java - 按 OK 按钮后 JFace 对话框保持打开状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12337652/

相关文章:

java - 最好的 Ant 教程/快速入门?

java - 删除树的节点时出现堆栈溢出错误

java - 如何将 JFace 对话框发送到后台或最小化它?

java - 蓝牙数据传输

java - 我怎样才能在 swt 中放置一个小部件并在同一个地方再次创建该小部件?

SWT 中的 javax.swing.Timer 等价物?

java - 如何解决 "import org.eclipse.wb.swt.SWTResourceManager"

java - 从 Java 执行 Ruby 脚本的运行时与 JRuby

java - 如何实现在窗口激活之前禁用的 Java/Swing 控件?

java - 设计一个比较器来排序单词,以便每个单词的最后一个字母是下一个单词的第一个字母?