2012-01-28 47 views
3

我有,我有不同的目標多窗口Swing應用程序,但他們都有着共同的兩兩件事:如何在2個不同的Swing窗口之間共享方法?

  • 他們使用特定的對象,它是業務邏輯相關
  • 他們必須更新一些小部件與特定對象的東西

所以,爲了避免冗餘的代碼,我想分享一些例程。
也許一個例子可以更清晰:

public class WindowA { 
    private JLabel labelA; 
    // ... 
    private void updateLabelInACertainManner() { 
      labelA.setText(this.specificObject.getText()); 
    } 
} 

public class WindowB { 
    private JLabel labelB; 
    // ... 
    private void updateLabelInACertainManner() { 
      labelA.setText(this.specificObject.getText()); 
    } 
} 

我如何共享updateLabelInACertainManner(),知道specificObject引用同一個對象在兩個班?

我在想繼承從包含該方法的WindowRootWindowAWindowB但如何做到這一點有labelAlabelB是不一樣的對象,不一定同樣的方式創造出來的?

回答

1

你可以通過其文本應在超改變作爲參數的方法標籤:

public class SuperWindow { 
    protected void updateLabel(JLabel label) { 
     label.setText("foo"); 
    } 
} 

public class WindowA extends SuperWindow { 
    private JLabel labelA; 
    //... 

    private void somethingHappened() { 
     updateLabel(labelA); 
    } 
} 

或者你可以寫標籤中的吸氣劑的具體子類:

public class SuperWindow { 
    protected abstract JLabel getLabel(); 

    protected void updateLabel() { 
    getLabel().setText("foo"); 
    } 
} 

public class WindowA extends SuperWindow { 
    private JLabel labelA; 
    //... 

    @Override 
    protected JLabel getLabel() { 
     return labelA; 
    } 

    private void somethingHappened() { 
     updateLabel(); 
    } 
} 

specificObject一樣。

+0

謝謝,這就是我需要讓我以正確的方式:) – user978548 2012-01-28 09:09:06

相關問題