2014-03-31 3 views
0

GUI에서 개체를 배치하는 여러 가지 방법을 배우고 있는데 setLayout 메서드를 사용하려면 LayoutManager으로 캐스팅해야하는 이유를 실제로 이해하지 못합니다. 제대로 작동하려면 LayoutManager 인터페이스를 구현해야합니까?왜 (LayoutManager)로 캐스팅하여 setLayout해야합니까?

public class FlowL extends JApplet{ 

    public void init(){ 

     // why is the cast necessary ? 
     // an error occurs when its setLayout(new FlowLayout());  
     setLayout((LayoutManager) new FlowLayout()); 


} 

} 
+1

동일한 패키지에서 'FlowLayout'(연습용 등)으로 정의한 다른 클래스가 있습니까? –

+0

아니요, FlowLayout이 이미 정의되지 않았습니까? 내가 할 일은 모두 물건을 추가하기 시작한거야? 예 : 'setLayout (new FlowLayout()); 'add (새 Button ("myButton")); ' – user3363537

+1

_ "은"_을 _this_ class'FlowL'이라는 이름을 보았습니다. 그래서 제가 물었습니다. 아마 당신은'FlowLayout'이라는 또 다른 클래스를 만들었을 것입니다. 그렇게했다면 그것은 당신 문제입니다. 그렇지 않으면 나는 다른 이유를 생각할 수 없다. –

답변

2

"심지어 내가 오류가 ... java.lang.ClassCastException 얻을 오류 disapears 불구하고 : flowLayout.FlowLayoutjava.awt.LayoutManager 캐스트 할 수없는"이

표준 자바 클래스 flowLayout.FlowLayout입니다. 그게 클래스입니다 (또는 레이아웃 관리자를 확장하지 않는 일부 제 3 자 클래스 일 수도 있습니다). 기존 자바로하지 이름 수업에게 동일한 작업을 수행 :

당신은

import java.awt.FlowLayout; 

을 가져 그리고 배울 수 있도록

import flowLayout.FlowLayout; // if you have that. 

  • 레슨을 제거해야합니다 수업.