2016-08-08 12 views
1

zオーダーでCompnentsを追加するのJLayeredPaneを使用している間、私はいくつかの問題に気づいた:のJLayeredPane zオーダーの問題

JLayeredPane lp = getLayeredPane(); 

JButton top = new JButton(); ... 
JButton middle = new JButton(); ... 
JButton bottom = new JButton(); ... 

が悪い作品:

lp.add(top,2); 
lp.add(middle,1); 
lp.add(bottom,3); 

は良い作品:

lp.add(top,new Integer(2)); 
lp.add(middle,new Integer(1)); 
lp.add(bottom,new Integer(3)); 

ここにあなたの見た目を見ることができます:http://i.imgur.com/eqH2El8.png

リテラル定数がIntegerオブジェクトに変換されず、正しく動作しないのはなぜですか?

答えて

3

本質的に、(Container)から継承するクラスには、コンポーネントのリストの特定の位置にComponentを追加する機能(add(Component comp, int layer))と、任意の引数を持つComponentを追加する関数がありますLayoutManagerに渡される)(add(Component comp, Object constraint))。

適切な関数を呼び出すためには(JLayeredPaneのLayoutManagerが制約を受け取るために)、引数はオブジェクトIntegerでなければならず、プリミティブではないintです。

3

リテラル定数がIntegerオブジェクトに変換されず、正しく動作しないのはなぜですか?

add(...)メソッドのAPIを参照する必要があります。

Containerクラスには、パラメータとして「int」を受け入れるメソッドがあります。これは、指定された位置にコンポーネントを挿入できるFlowLayoutのようなレイアウトに使用されます。

JLayeredPaneクラスには、コンポーネントのレイヤーを指定するための "Integer"値を受け入れるメソッドがあります。

したがって、オートボクシングに頼ってintをIntegerに変換することはできません。

関連する問題