2016-08-08 4 views
1

z 순서에 Compnents를 추가 할 수의 JLayeredPane를 사용하는 동안, 나는 몇 가지 문제를 발견의 JLayeredPane z 순서 문제

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)에서 상속받은 클래스에는 구성 요소 목록 (add(Component comp, int layer))의 주어진 위치에 Component를 추가하는 기능과 주어진 인수를 사용하여 Component를 추가하는 기능 LayoutManager에 건네받습니다 (add(Component comp, Object constraint)).

오른쪽 함수를 호출하고 제약 조건을 받기 위해 JLayeredPane의 LayoutManager를 사용하려면 인수가 Integer 인 객체 여야하고 int이 아닌 객체 여야합니다.

3

리터럴 정수가 정수 개체로 변환되지 않고 제대로 작동하지 않는 이유는 무엇입니까?

add(...) 방법에 대한 API를 확인해야합니다.

Container 클래스에는 "int"를 매개 변수로 허용하는 메서드가 있습니다. 이것은 지정된 위치에 구성 요소를 삽입 할 수있는 FlowLayout과 같은 레이아웃에 사용됩니다.

JLayeredPane 클래스에는 구성 요소의 레이어를 지정하는 "정수"값을 허용하는 메서드가 있습니다.

따라서 autoboxing을 사용하여 int를 Integer로 변환 할 수는 없습니다.