java - MVP、JFrame、JDialog : GUI is freezing

标签 java swing user-interface

我有主框架(带有 JFrame 字段)asi view,然后有 presenter (在 View 的构造函数中创建),它将监听器添加到按钮和其他内容。我这样做是这样的:

public static void main(final String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    MyWindow window = new MyWindow();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

MyWindow 在其构造函数中仅调用一种方法 - intialize - 仅创建 GUI 字段。最后(实际上是代码的最后一行)它创建了演示者。

Presenter 应在主视图中的某些事件上显示新的 JDialog。它有一种方法,使我的 GUI 卡住。它看起来像这样:

protected double[] getParams(final Class<?> indicatorClass) {
        ParametrizableDialog dialog = dialogs.get(indicatorClass); // works well
        List<Double> params = new ArrayList<Double>();
        dialog.setParams(params);
        dialog.setModal(true);
        dialog.setLocationRelativeTo(view.getFrame());
        dialog.setVisible(true);
        System.out.println(params); // it actually works, params are obtained from JDialog as user input
        return Doubles.toArray(params); // guava
    }

ParametrizableDialog正常JDialog实现一个设置 List<Double 的方法接口(interface)> 参数如下:

public class ParametrizableDialog extends JDialog implements Parametrizable {

    protected List<Double> params;

    @Override
    public void setParams(final List<Double> params) {
        this.params = params;
    }

}

现在,有人知道我犯了什么错误以及为什么我的 GUI 卡住了? 谢谢!

最佳答案

如果 GUI 卡住,通常是因为您阻止了 EDT。阅读 Swing 教程中关于 Concurrency 的部分了解更多信息。

我们无法判断您在做什么,因为您的代码不完整。例如,您甚至不向 GUI 添加任何组件。所以谁知道你在你遗漏的代码中做了什么。

如需更多帮助,请发布您的 SSCCE这说明了问题。

关于java - MVP、JFrame、JDialog : GUI is freezing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5627449/

相关文章:

java - 在用户交互时显示 TextField

java - 调整 GUI 的大小?

类似 twitter 示例的 Android 操作栏

java - 计算 Pi Java 程序

java - Tomcat 缓存 XHR 响应

java - 如何以编程方式忘记android中的无线网络?

java - 我正在尝试基于 servlet 的应用程序来工作

java - JFrame 在内容周围显示白条

ios - 在 Xcode UI 测试中是否可以获取 View 的方向

java gui背景颜色没有覆盖整个页面