2012-01-06 8 views
0

私はJavaでGUIを学ぼうとしていますが、ちょっと混乱していて、このコードの違いによってウィンドウにコンポーネントが追加されるのでしょうか?コード例を見ると、JPanelを使用して、いくつかの例が書かれています:panel.add(何か);いくつかのコードは単にadd(something)を使用します。またはcontentPane.add(something);私はちょうど興味がある。ありがとう!JavaのGUIについて

JList text; 

JPanel panel = new JPanel(); 
frame.add(panel); 
panel.add(text); 

-

setLayout(new FlowLayout); 
add(text); 

-

Container contentPane; 
contentPane = getContentPane(); 
contentpane.setLayout(new FlowLayout); 
contentPane.add(text); 
+0

[こちら](http://docs.oracle.com/javase/tutorial/uiswing/) – mre

+0

可能な複製http://stackoverflow.com/questions/2432839/what-is-the-rellation-between -contentpane-and-jpanel – Andy

答えて

0

差は、コードが置かれている場所にあります。コードの2番目のセクションは、setLayoutaddのメソッドを持つクラスのメソッド内でのみ意味を持ちます。おそらくこれは、クラスがJPanelまたは別のContainerを継承するカスタムGUIコンポーネントであるためです。

第3セクションではJFrameのメソッドであるgetContentPaneが呼び出されるため、そのクラスを継承する可能性が高くなります。

サンプルコード(またはそのリンク)の周囲の文脈を投稿するために質問を編集すると、私(または私がSwingに慣れている人)は、それがどのように機能するかについてより詳細な説明を与えることができます。

+0

ありがとう!私はそれをより良く理解するために、もう少し研究をしなければならない。私はちょうどJavaでGUIを作成するためのさまざまな方法すべてで混乱する –

2

表示されている相違点は、Java言語と関連があり、実行される実際の操作とはあまり関係がありません。あなたが特定のオブジェクトを指定せずにメソッドを呼び出した場合

、Java言語を使用すると、thisオブジェクトのメソッドを呼び出している、またはオブジェクトが、現在で働いていることを前提としています。

public class MyClass { 

    public void doThis() { 
    } 

    public void doThat() { 
    // the following line will call this.doThis() 
    doThis(); 
    // this is exactly the same as the line above, except it is explicitly stated 
    this.doThis(); 
    } 

} 

時にはメソッド願いを別のオブジェクトのメソッドを呼び出すその場合、あなたは、変数を持っている「その他」のオブジェクトへの参照を保持し、あなたがそのオブジェクトのメソッドを呼び出すときに、名前の参照を逆参照、1例は以下のようになりますする必要があります。

public Class MyOtherClass { 

    public void doTheOtherThing(MyClass myClass) { 
    myClass.doThis(); 
    } 

} 

別の例をスイングのプログラミングを別の方法で行ういくつかの例は、他の例よりもオブジェクト指向である傾向があります。たとえば、「特別な」ボタンが必要な場合、ボタンのサブクラスをサブクラス内で適切に設定する例と、サブクラス化されていないボタンを作成して「JButton」クラスの外部から設定する例があります。

良いオブジェクト指向プログラミングは、外部構成に対する解決策としてサブクラス化を優先します。これは、ボタンを構成するコードが新しいボタンサブクラスの一部となるため、プログラムを介して構造的に異なる場所にButtonを移動すると、設定コードが誤ってボタンから分離されることがないからです。時には、オブジェクト指向の構造を分析することはコストがかかることがあります。その場合、オブジェクトに外部的な影響が多いコードがリリースされる可能性があります。

+0

情報ありがとう! –