java - PaintComponent() 的问题

标签 java swing paintcomponent repaint

public class ImagePreview extends JPanel {

    private static final long serialVersionUID = 1L;
    final float ratio = 1.0f;
    private RenderedImage image;

    public ImagePreview (int imgWidth, int imgHeight) {

        this.setPreferredSize(new Dimension((int) (ratio * imgWidth) + 5, (int) (ratio * imgHeight) + 5));
    }

    public ImagePreview (int imgWidth, int imgHeight, final RenderedImage image) {
        super();
        this.setPreferredSize(new Dimension((int) (ratio * imgWidth) + 5, (int) (ratio * imgHeight) + 5));
        this.image = image; 
        repaint();
    }

    @Override
    public synchronized void paintComponent(Graphics g) {
        super.paintComponent(g);
        VectorGraphics g2 = VectorGraphics.create(g);
        if (image != null) {
            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            g2.drawRenderedImage(image, AffineTransform.getScaleInstance(ratio, ratio));
        }
    }
}

单击按钮时调用此方法 //调用这个方法 ImagePreview 购物车 = new ImagePreview(imgWidth, imgHeight, image);

我正在获取图像,但它没有在面板上重新绘制。我无法确定背后的原因

最佳答案

But i just want to create a preview panel for the image

当你进行自定义绘画时,你需要重写面板的getPreferredSize()方法来返回图像的大小,否则大小为(0, 0),所以没有什么可画的.

VectorGraphics g2 = VectorGraphics.create(g);

不要使用第 3 方类发布代码。我们不知道问题是出在您的代码还是类上。

如果您需要更多帮助,请发布适当的SSCCE这说明了问题。

关于java - PaintComponent() 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29700795/

相关文章:

java - 使用动态字段名称反序列化嵌套的 JSON 对象

java - 从txt文件读取二维数组java扫描仪

java - 测试 Spring AOP 方面

java - 如何使用 Allure 组织 junit 测试套件

java - 当我在 Jpanel 中使用 drawImage 时,为什么它会失败

java - DocumentBuilder 中的 parse 方法返回错误

java - 使用同一个 Jbutton 多次更改形状的颜色

Java JList和列表问题

java - JPanel 中的 KeyListener 不起作用(面板已聚焦)

java - PaintComponent 代码不起作用