【问题标题】:Java Photo Album Using GridLayout使用 GridLayout 的 Java 相册
【发布时间】:2012-01-02 21:16:57
【问题描述】:

我想用 Java 制作简单的相册。要做到这一点,我认为这将是使用网格布局协调图片的最简单方法。

我有我的图片的缓冲图像,我正在尝试使用以下代码将它们添加到网格布局中,

    BufferedImage a = GUI.createImage(current);
    Image b = Toolkit.getDefaultToolkit().createImage(a.getSource());

    Icon pic = new ImageIcon(b);        
    JButton picB = new JButton("Picture 1", pic );
    selectB.setVerticalTextPosition(AbstractButton.BOTTOM);
    selectB.setHorizontalTextPosition(AbstractButton.CENTER); //aka LEFT, for left-to-right locales
    add(picB);

我也在尝试使用以下代码缩小我的缓冲图像,

int w = a.getWidth();
    int h = a.getHeight();
    BufferedImage after = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
    AffineTransform at = new AffineTransform();
    at.scale(0.6, 0.6);
    AffineTransformOp scaleOp = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
    after = scaleOp.filter(a, after);

但是,即使我将图片的大小最小化,按钮也比图片大,我无法组织图片。

您有什么建议或新的解决方案吗?

谢谢。

【问题讨论】:

  • 请原谅,但我在您的代码中看不到您将布局管理器设置为 GridLayout

标签: java swing positioning bufferedimage grid-layout


【解决方案1】:
picB.setInsets(new Insets(1, 1, 1, 1));

BufferedImage 也是一个 Image,因此似乎不需要 b

BufferedImage 关联了一个 Graphics,因此可以按如下方式调整大小:

BufferedImage scaled = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
scaled.getGraphics().drawImage(original, 0, 0, width, height, null);

【讨论】:

    【解决方案2】:

    谢谢你的回答,我也处理了下面的情况;

    我没有使用缩放,而是创建了一个名为 resize 的新函数

    public static BufferedImage resize(BufferedImage img, int newW, int newH) {
        int w = img.getWidth();
        int h = img.getHeight();
        BufferedImage dimg = dimg = new BufferedImage(newW, newH, img.getType());
        Graphics2D g = dimg.createGraphics();
        g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
        g.drawImage(img, 0, 0, newW, newH, 0, 0, w, h, null);
        g.dispose();
        return dimg;
    }
    

    然后对我的名为 bf 的缓冲图像,我调用了 resize func 并将其转换为图标

    bf = resize(bf, bf.getWidth()/3, bf.getHeight()/3);
    Image im = Toolkit.getDefaultToolkit().createImage(bf.getSource());
    Icon ic = new ImageIcon(im);
    

    然后我添加了带有图像的按钮,

    JButton bt = new JButton("Picture", ic);
    bt.setVerticalTextPosition(AbstractButton.BOTTOM);
    bt.setHorizontalTextPosition(AbstractButton.CENTER);
    add(bt);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-03
      • 1970-01-01
      • 2016-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多