第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JFrames 之間的交互

JFrames 之間的交互

慕森王 2021-06-29 15:12:27
我有 3 個 JFrame,第一個打開另外兩個。這兩個 JFrame 然后應(yīng)該相互交互。其中一個將顯示一張圖片,另一個有 JSlider 來更改該圖片的某些值等。如何為我的 JSlider 實(shí)現(xiàn)一個 ActionListener 來更新另一個 JFrame 中的圖片?創(chuàng)建其他 JFrame 的對象將調(diào)用其構(gòu)造函數(shù),但我不想再次打開該 JFrame。也許我的方法完全錯誤?我正在嘗試做的簡化版本:public class JFrame1 extends JFrame {...}    public JFrame1 () { // Constructor    ...    button.addActionListener(new ActionListener() { //when button is pressed        public void actionPerformed(ActionEvent e) {        JFrame2 obj2 = new JFrame2(); // open JFrame2        JFrame3 obj3 = new JFrame3(); // open JFrame3        }    });    }public class JFrame2 extends JFrame {...}    public JFrame2 () { //Constructor    ...    ActionListener for JSliders from JFrame3 to update values whenever they're changed??    label.setIcon(new ImageIcon (image)); //display image    }public class JFrame3 extends JFrame{...private JSlider slider1;private JSlider slider2;}    public JFrame3 () { //Constructor    ...    some JSlider settings    }
查看完整描述

2 回答

?
慕絲7291255

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個贊

JFrame3在第 2 幀和第 3 幀中添加另一個類型為私有的成員,如下所示:


public class JFrame2 extends JFrame {

    public JFrame2(JFrame3 frame) {

        this.frame = frame;

        // Now you add your listeners, you have access to the sliders of your JFrame3

        ...

    }

    private JFrame3 frame;

    ...

}

現(xiàn)在,在JFrame3類中,您需要JSliders公開所有內(nèi)容,以便可以從JFrame2編譯器抱怨的其他地方訪問它們。


之后在JFrame1構(gòu)造函數(shù)中將 的實(shí)例傳遞JFrame3給JFrame2像這樣的構(gòu)造函數(shù):


public JFrame1 () { // Constructor

    ...

    button.addActionListener(new ActionListener() { //when button is pressed

        public void actionPerformed(ActionEvent e) {

        JFrame3 obj3 = new JFrame3(); // open JFrame3

        JFrame2 obj2 = new JFrame2(obj3); // open JFrame2

        }

    });

}

請注意,我已經(jīng)改變了構(gòu)造JFrames的順序,以便我可以將 傳遞obj3給JFrame2


查看完整回答
反對 回復(fù) 2021-06-30
?
拉莫斯之舞

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個贊

你會想要成為模型-視圖-控制器設(shè)計(jì)模式的農(nóng)民。

您想要做的一件事是減少任何一個類的責(zé)任量。

在您的情況下,您有一個窗口顯示圖像,另一個窗口顯示控件(盡管我會考慮使用單個窗口來顯示兩者,但概念保持不變)。

這兩個類都沒有真正負(fù)責(zé)根據(jù)輸入“更改”圖像,相反,這實(shí)際上應(yīng)該屬于另一個類 - 一個模型。

這將從“控件”窗口獲取輸入,修改它的狀態(tài)并生成相關(guān)方可以響應(yīng)的事件(也稱為觀察者模式)。

通過這種方式,您可以更改模型的實(shí)現(xiàn),而不會對依賴它的其他類產(chǎn)生不利影響(這依賴于另一個概念 -接口代碼而不是實(shí)現(xiàn)),因?yàn)樗鼈儾灰蕾囉趯?shí)現(xiàn),而是定義的契約y 模型的接口。

當(dāng)您建立“控件”和“圖像”窗口時,您還將向它們傳遞“模型”的相同實(shí)例,通過此,兩個窗口將能夠進(jìn)行通信——由合同定義的程度模型,但我想它主要是一種方式(控制視圖 -> 模型 -> 圖像視圖)


查看完整回答
反對 回復(fù) 2021-06-30
  • 2 回答
  • 0 關(guān)注
  • 247 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號