簡體   English   中英

使用較少的對象創建從另一個jframe調用Jframe

[英]Calling a Jframe from another jframe using less Object creation

我有一個包含一個按鈕的Jframe,單擊后會打開下一個jframe(將其設為A)

Jframe構造函數包含如下代碼:

setVisible(true);
setSize(343,34);

我在Jbutton actionListener中放入以下代碼:

new A();

現在,我有十個jframe,它們也具有具有相同功能的按鈕。
我認為這種方法不合適,因為每次單擊時都會創建一個新的A對象。
還有其他解決方案嗎?

可能的簡化解決方案如下。

在您的Jbutton actionListener中:

new ActionListener {
    private JFrame jFrame = null;
    public void actionPerformed(ActionEvent e) {
        if (jFrame == null) {
            jFrame = new A();
        }
        jframe.setVisable(true);
    }
}

然后,我將從A()構造函數中刪除代碼,使該框架在構造上可見。 那只是個人編碼偏好。 當框架在構建時出現時,我從不喜歡。

當然,這是一個非常簡單的解決方案。 您確實可以迅速進入更復雜的解決方案。 您可以讓中介者專門偵聽該特定的JButton,然后制定一種策略來顯示新的Frame等。這實際上取決於您想要的代碼耦合程度。

編輯

更復雜一點的示例,它不使用匿名內部類...

public void AMediator implements ActionListener {
    JFrame jFrame = null;
    public void actionPerformed(ActionEvent actionEvent) {
        if (jFrame == null) {
            jFrame = new A();
        }
        jFrame.setVisable(true);
        jFrame.bringToTheFront():  // Not sure this method exists, but it might be worth it to bring this frame forward even if it is already visible.
    }
}

然后,您需要使用要打開A JFrame實例的每個按鈕注冊上述介體。

注冊此中介器的方法有很多:
-使用將所有組件連接在一起的主類。
-使用Spring的依賴注入。
-使用可由許多不同服務訪問的集中式服務。
- 其他?

這樣,您將只有一個介體(而不是許多匿名的ActionListener內部類)。

暫無
暫無

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

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