2017-02-11 14 views
0

私は2つの方法で試しているフレームにボタンを追加しようとしています。JPanelとJFrameにレイアウトマネージャを追加する

  1. JPanelのレイアウトを変更し、ボタンをパネルに直接追加します。 (下記コードのコメント欄)。次に、パネルをフレームに追加します。このアプローチでは、ボタンがJFrameに表示されます。

  2. メソッドを使用してボタンを追加すると、BorderLayoutが作成されます。その後、パネルにblBorderLayoutの参照)を追加し、次にJFrameを追加します。 このアプローチではフレームにボタンが表示されないのはなぜですか?どこで私は間違えましたか?

AWTコンポーネントの学習に誰も助けてくれますか?私は最初に何を読むべきか、概念のシーケンスを意味します。

jf = new JFrame(); 
jp= new JPanel(new BorderLayout()); 

/*jp.add(new JButton("North"), BorderLayout.NORTH); 
jp.add(new JButton("South"), BorderLayout.SOUTH); 
jp.add(new JButton("East"), BorderLayout.EAST); 
jp.add(new JButton("West"), BorderLayout.WEST); 
jp.add(new JButton("Center"), BorderLayout.CENTER); 
jf.add(jp); 
*/ 

BorderLayout bl = new BorderLayout(); 

bl.addLayoutComponent(new JButton("North"), BorderLayout.NORTH); 
bl.addLayoutComponent(new JButton("South"), BorderLayout.SOUTH); 
bl.addLayoutComponent(new JButton("East"), BorderLayout.EAST); 
bl.addLayoutComponent(new JButton("West"), BorderLayout.WEST); 
bl.addLayoutComponent(new JButton("Center"), BorderLayout.CENTER); 
jp.setLayout(bl); 
jf.add(jp); 
+0

*「AWT **コンポーネントの学習に誰も助けてくれますか?」* AWTはレイアウト、色、フォントなどにはまだ便利ですが、AWTベースのコンポーネントはそのままにしておいてください。彼らは完全に(より良い)同等のSwingに置き換えられました。または、私が一般的なコピー/貼り付けのコメントの1つに入れているように:なぜAWTを使うのですか? Swingに賛成するAWTコンポーネントを放棄する多くの理由から、[この回答](http://stackoverflow.com/questions/6255106/java-gui-listeners-without-awt/6255978#6255978)を参照してください。 –

答えて

3

2番目の方法は間違っているため動作していません。コンポーネントをレイアウトマネージャに直接追加するのではなく、レイアウトマネージャのチュートリアル(Layout Manager Tutorial)で概説されているように、レイアウトマネージャを使用するコンテナに追加する必要があります。 BorderLayout APIでは、コーダーはaddLayoutComponentメソッドを直接呼び出すのではなく、コンポーネントがコンテナに追加されたときにコンテナ自体によって間接的に呼び出されます。このメソッドは、コンポーネントをのレイアウトに追加しますが、コンテナ自体には追加しません。、それは重要な違いです。

+0

ありがとうホバークラフトえさの完全。しかし、addLayoutComponentの目的は何か。これがコーダーによって明示的に使用されるべきでない場合。 –

+0

このレイアウトマネージャは、レイアウトマネージャに割り当てられたコンテナによって使用されます。それは外部のクラスで使用されるため、公開されている必要があります。しかし、やはりチュートリアルでは、レイアウトの使い方を説明しています。 –

関連する問題