簡體   English   中英

MVP,JFrame,JDialog:GUI凍結

[英]MVP, JFrame, JDialog : GUI is freezing

我有一個主框架(帶有JFrame字段)作為asi 視圖 ,然后是演示者 (在視圖的構造函數中創建),該演示者向按鈕和內容添加了偵聽器。 我這樣做是這樣的:

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僅在其構造函數中調用一種方法-初始化-僅創建GUI字段。 最后(實際上是代碼的最后一行),它創建演示者。

演示者應在主視圖中的某些事件上顯示新的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 >參數,如下所示:

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 並發教程中的有關更多信息的部分。

我們無法確定您在做什么,因為您的代碼不完整。 例如,您甚至沒有將任何組件添加到GUI。 那么誰知道您在遺漏的代碼中正在做什么。

要獲得更多幫助,請發布可證明問題的SSCCE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM