2012-10-29 6 views
1

에서 작동하지 않는 나는 JLabel의를 확장하는 클래스를 가지고 다음과 같이 내가이 같은 다른 클래스의 생성자에서 그릴 때이 paintPhotos.java자바의 drawImage 이벤트

package myApp; 
import java.awt.*; 
import javax.swing.*; 
/** 
* 
* @author PAGOLINA 
*/ 
public class paintPhotos extends javax.swing.JLabel { 

    public Image img; int w; int h; 
public paintPhotos(Image img, int w, int h) { 
    this.img = img; this.w = w; this.h = h; 
    System.out.println("am paintclass"); 
} 
@Override 
public void paintComponent(Graphics p) { 
    System.out.println("am here"); 
    super.paintComponent(p); 
    Graphics2D g2 = (Graphics2D) p; 
    p.drawImage(img, 0, 0, w, h, this); 
} 

} 

이다가의 paintComponent를 사용하여 그리기 (AddScore.java).

public AddScore() { 
    initComponents(); 
    setLocationRelativeTo(null); 
    removeNotify(); 
    setUndecorated(true); 
    Image imag = new ImageIcon(this.getClass().getResource("img/top_bg.jpg")).getImage(); 
    showPix1.setLayout(new BorderLayout()); 
    showPix1.add(new paintPhotos(imag,40,40), BorderLayout.CENTER); 
} 

위의 작업을 올바르게 수행하고 지정된대로 이미지를 그립니다.

하지만 다른 클래스 (AddScore.java)의 actionperform 이벤트에서 이미지를 그릴 때.

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { 
    // TODO add your handling code here: 
    Image imag = new ImageIcon(this.getClass().getResource("img/top_bg.jpg")).getImage(); 
      showPix1.setLayout(new BorderLayout()); 
      showPix1.add(new paintPhotos(imag,20,20), BorderLayout.CENTER); 
} 

의 paintComponent가 작동되지 않는 위의 문이 작동하지 않았다, 는 내가 무슨 일을하고 있는가?

다른 사람이 나를 도와 줄 수 있습니까? 내 paintPhotos 클래스를 호출하는 모든 가능한 방법을 시도했지만 아직 작동하지 않습니다.이 코드의 문제점은 무엇입니까?

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { 
// TODO add your handling code here: 
Image imag = new ImageIcon(this.getClass().getResource("img/top_bg.jpg")).getImage(); 
     showPix1.setLayout(new BorderLayout()); 
     showPix1.add(new paintPhotos(imag,20,20), BorderLayout.CENTER); 
} 
+1

1) * "나는 JLabel의를 확장하는 클래스를 그립니다 그것에 paintComponent를 사용하여 "* 왜? 'BufferedImage'를 그린 다음 [여기]와 같이 레이블에 표시하십시오 (http://stackoverflow.com/questions/12208574/using-addmouselistener-and-paintcomponent-for-jpanel/12216139#12216139). 2) 더 빨리 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

+0

자바 명명 규칙을 배우고 준수하십시오. – kleopatra

+2

이미 구성 요소를 GUI에 추가했습니다. 'actionPerformed()'메소드에서 필요한 것은'PaintPhotos' 클래스의 이미지를 갱신하고'repaint()'를 호출하는 것입니다. –

답변

5
  1. 은 즉석에서 지역 변수로

  2. Icon/ImageIcon에 대한 JLabel에 사용하는 것을 부하를 이미지를로드하지 않습니다이 경우 JLabel

  3. Icon/ImageIconImage를 넣어 적절한 LayoutManager

  4. 일반적인 문제는 Icon/ImageIcon 빨리 게시, 예외를 더 나은 도움을 null value

  5. 를 테스트하는 한 반환하지 않는 SSCCE

+0

당신은 특정 크기로 이미지를 그리지 못할 수도 있습니다. – easyscript