2012-02-08 8 views
0

対コンポジット、それはmain()のJava SWT:私が以前持っていたのJava SWTラボでシェル

public static void main(String[] args){ 
    Display display = new Display(); 
    Shell shell = new Shell(display); 
    Calculator calc = new Calculator(shell, SWT.NONE); 
    calc.pack(); 
    shell.pack(); 
    shell.open(); 
    while(!shell.isDisposed()){ 
      if(!display.readAndDispatch()) display.sleep(); 
    } 
} 

を追加しかし、なぜこのようにそれを行うその後、複合材料を使用して語ります。シェルを使うべきではありませんか?これの理由は何でしょうか?

+2

あなたの質問は不明です:まず、このCalculatorクラスは何ですか?第2:「シェル」が使用される(3行目参照)。あなたの質問はどういう意味ですか? –

答えて

1

Compositeを延長する必要がありますが、Shellを延長しないでください。まあ、あなたが望むどんなアプローチを使用することもできます。しかし、もしあなたが自分のものを直接シェルに入れたら、このコードを他の場所で再利用するのはずっと難しくなります。例えば。コンポーネントの基本クラスとしてCompositeを使用すると、コードをより再利用できるようになります(シェルを別のコンポジットの真中に置くことはできません)。

+3

[documentation](http://help.eclipse.org/indigo/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/package-summary.html)は明確です - 'Shell':_IMPORTANT:このクラスはサブクラス化されていません._' Composite':_このクラスは、他のコントロールの集まりから構築されたコントロールを構築しているカスタムコントロールの実装者によってサブクラス化されます。 – McDowell

関連する問題