2013-02-23 10 views
-3

을 유지하면서 구성을 설정 나는 다음과 같은 소스를 실행하지만는 JPanel의 유형

형식 불일치를 얻으려고 : JPanel의

오류 CustomJPan에서 변환 할 수 없습니다. 누군가 도와 주실 수 있습니까? 소스를 변명해라, 나는 내 머리 꼭대기에서 그것을했다.

public class rebuiltgui extends JApplet { 

    public void init() { 

    JPanel jpan = new CustomJPan();  
    } 
} 

class CustomJPan { 

    public JPanel CustomJPan() { 

    thispan = new JPanel(); 
    thispan.setBackground(Color.red); 
    return thispan; 
    } 

    public changeColour() { 

    // Change colour to blue here 
    } 
} 
+0

http://docs.oracle.com/javase/tutorial/java/javaOO/classes.html –

+0

내가 생각했던 죄송합니다 서브 클래 싱 (facepalm) –

답변

2

나는 인 JPanel을 확장하기 위해 변경

public class rebuiltgui extends JApplet { 

    public void init() { 

    JPanel jpan = new CustomJPan();  
    } 
} 

class CustomJPan extends JPanel { 

    public CustomJPan() { 
     super(); 
     setBackground(Color.red); 
    } 

    public void changeColour() { 

    // Change colour to blue here 
    } 
} 

뭔가를 시도

+0

멋지다! 나는 온라인에서 옵션을 벗어났다. 정말로 나를 괴롭혔다 .TYVM –

+0

당신은 가장 큰 나의 친구 다. –

2

CustomJPan은 아무 것도 확장하지 않으므로 코드에서 직접 서브 클래 싱을 수행하지 않습니다. 대신 클래스와 동일한 이름을 가진 "pseudo"생성자 인 CustomJPan이 반환하는 것으로 보이며 생성자가 아무 것도 반환하지 않는다고 선언했음을 알 수 있습니다.

서브 클래스를 원하면 다른 클래스를 확장해야합니다. 즉

,

public class CustomJPan extends JPanel { 

    // a real constructor has no return type! 
    public CustomJPan() { 
     // ....   
    } 

    // ... etc 
} 

서브 클래스가 아니라 어떤 소개 자바 교과서에 포함되며,이 장을 읽으 잘 할 것입니다.

주의 사항 : 클래스의 본질적인 동작을 변경하려는 경우, 특히 메소드를 재정의하려는 경우와 같이 명확한 필요가없는 경우 서브 클래 싱을 피하는 것이 좋습니다.

+0

죄송합니다! 나는 C++ 사람이고 OOPing Swing은 조금 새로운 것입니다. –

+0

@RolandSams : 다시 말하지만, 거기에 대해 잘 설명되어 있으므로이 글을 읽고 싶을 것입니다. –

+0

메인 자바 파일에서 파편을 깨끗하게 정리하고 싶습니다. . (구성 요소 속성 설정과 같은) 다른 클래스에서 다양한 JPanels 등을 숨기는 것이 좋습니다. –