1

jlabel を拡張し、次のように paintComponent を使用して描画するクラスがあります。これは paintPhotos.java です。

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);
}

}

このような別のクラスのコンストラクターから描画しようとすると(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);
}

ペイントコンポーネントが機能していないため、上記のステートメントは機能しませんでした。何が間違っていますか?

誰かがこの cos で私を助けてくれますか?

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);
}
4

1 に答える 1

5
  1. JLabelIcon / ImageIconImageとして配置

  2. この場合、その場で画像をロードせず、ローカル変数としてロードします

  3. for Icon/ ImageIconin JLabelto use 適切なLayoutManager

  4. よくある問題はIcon/ImageIcon例外を返さないことです。テストする必要がありますnull value

  5. より良いヘルプのために、SSCCEをすぐに投稿してください

于 2012-10-29T09:00:37.243 に答える