2 回答

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

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)行通信——由合同定義的程度模型,但我想它主要是一種方式(控制視圖 -> 模型 -> 圖像視圖)
添加回答
舉報