gpt4 book ai didi

java drawImage 不能从事件中工作

转载 作者:行者123 更新时间:2023-11-29 08:03:12 31 4
gpt4 key购买 nike

我有一个扩展 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);
}

上面的语句没有起作用,因为 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. 图片设为Icon / ImageIconJLabel

  2. 在这种情况下,不要动态加载图像,而是将其作为局部变量加载

  3. 对于 JLabel 中的 Icon/ImageIcon 使用正确的 LayoutManager

  4. 常见问题是 Icon/ImageIcon 不返回任何异常,必须测试 null value

  5. 为了获得更好的帮助,请尽快发布 SSCCE

关于java drawImage 不能从事件中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13118409/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com