2011-12-28 3 views
0

다른 질문이 JButtons 및 JPanels와 관련되어 있기 때문에 중복 된 것으로 생각하지 않습니다. 한 가정하는 것처럼 자바에 다음과 같은 이유가 궁금애플릿 백그라운드에서 setBackground가 작동하지 않습니다.

작동하지 않습니다 : 내가 애플릿을 실행할 때

import javax.swing.JApplet; 
import java.awt.*; 

public class Example extends JApplet 
{ 
    public void paint(Graphics page) 
    { 
     setBackground (Color.cyan); 
    } 
} 

는 기본적으로 배경에 관계없이 색상의, 변경되지 않습니다. 같은 효과를 얻기위한 다른 옵션이 있다는 것을 알고 있지만 교과서의 예제를 사용하고 있으며 내 컴퓨터에서 작동하지 않는 이유를 알고 싶습니다.

답변

3

하지만 교과서

에서 예를 사용하고는 교과서 제거하십시오. JApplet의 paint() 메소드를 오버라이드해서는 안됩니다 (이전 AWT 기술이며 Swing에서는 사용되지 않습니다).

스윙의 애플릿은 스윙의 애플리케이션과 같습니다. 애플릿의 컨텐츠 분할 창에 구성 요소를 추가합니다. 사용자 정의 페인팅은 JPanel (또는 JComponent)의 paintComponent() 메소드를 대체하여 수행 한 다음 내용 분할 창에 패널을 추가 할 때 수행해야합니다.

애플릿의 배경을 변경하려면 내용 분할 창의 배경 (또는 내용 분할 창의 중앙에 추가하는 패널의 배경)을 변경하십시오. 예 :

getContentPane().setBackground(Color.CYAN); 

이 코드는 init() 메소드에서 실행됩니다.

Swing tutorial으로 시작하십시오. How to Make Applets과 'Performing Custom Painting`에 대한 섹션이 있습니다.

+0

페인트 방법을 재정의하는 것이 이전의 awt 기술이라고 말하면서 J2SE 5.0과 일관성이 있습니까? 이것이 실제로 책에서 페인트 메소드를 대체하는 유일한 예이기 때문입니다. 다른 예제는 올바른 방식으로 수행되는 것처럼 보이며, 가치가 떨어지는 기술이 적용되는 곳에서 혼란스러워합니다. – user1086516

+2

자바 버전과 아무 관련이 없습니다. 그것은 AWT와 Swing 사이의 차이와 관련이 있습니다. – camickr

관련 문제