2010-08-11 2 views
0

다음과 같이 jEditorPane을 확장했습니다 (인스턴스화 코드 빼기). 그러나 이미지를 설정하고 객체에 대한 업데이트를 호출하면 이미지의 한 부분 만 그립니다 (한 줄의 텍스트가 표시되는 것과 같습니다). somene이 내가 여기서 잘못하고있는 것을 말해 줄 수 있습니까?jEditorPane를 확장 해 메모리로부터 버퍼링 된 이미지를 표시해, 표시했지만, 올바르게 페인트하지 않았습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

공용 클래스 JEditorPaneImg는 JEditorPane의 {

private BufferedImage bi = null; 

public JEditorPaneImg() { 
    initComponents(); 
} 

@Override 
public void paint(Graphics g) { 
    super.paint(g); 
    if (bi != null) { 
     Graphics2D g2 = (Graphics2D) g; 
     g2.drawImage(bi, 0, 0, this); 
    } 
} 

public void setImage(BufferedImage image){ 
    bi = image; 
} 

}

답변

0

나는 당신이하려고하는 것을 이해하지를 확장합니다. 편집기 창에서 텍스트 위에 이미지를 칠하는 것처럼 보입니다.

먼저 update()를 호출하면 안됩니다. 스윙은 그림을 언제 끝내야하는지 결정할 것입니다.

편집기 창 위에 이미지를 그리려면 편집기 창에 사용자 정의 그림을 추가 할 필요가 없습니다. JLabel을 만들고 레이블에 ImageIcon을 추가하면됩니다. 그런 다음 레이블을 편집기 창에 추가하십시오. 다음을 사용하십시오 :

label.setSize(label.getPreferredSize()); 

그리고 레이블은 단순히 편집기 창의 하위 구성 요소로 그려집니다.

더 많은 도움이 필요하면 SSCCE에 문제가 게시되어 있어야합니다.