我有一个JPanel具有(5,7),5行,7列的网格布局。

当我尝试将图像添加到网格面板时

    Img = new ImageIcon("ImagePath");
    JLabel Label = new JLabel(Img);
    add(picLabel);

对于我的网格面板来说,图像似乎太大了,而网格面板上只显示了一小部分图像。

如何将图像添加到网格,以便图像调整为网格大小。

===============>>#1 票数:3

不要使用JLabel和ImageIcon。 相反,我会

  • 创建一个扩展JPanel的类
  • 重写其paintComponent(Graphics g)方法
  • 记得在我的覆盖中调用super的方法
  • 给它一个BufferedImage字段,比如说image
  • 通过构造函数或setter参数或两者将图像传递到类中。
  • 调用g.drawImage(image,....)重载,该重载允许重新调整图像的大小,以使其填充JPanel。

链接:

查看此重载:

public abstract boolean drawImage(Image img,
            int x,
            int y,
            int width,
            int height,
            ImageObserver observer)

或这一个:

public abstract boolean drawImage(Image img,
            int dx1,
            int dy1,
            int dx2,
            int dy2,
            int sx1,
            int sy1,
            int sx2,
            int sy2,
            ImageObserver observer) 

编辑
例如,

// big warning: code not compiled nor tested
public class ImagePanel extends JPanel {
  private BufferedImage image;

  public ImagePanel(BufferedImage image) {
    this.image = image;
  }

  @Override
  protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    if (image != null) {
      g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
    }
  }
}

===============>>#2 票数:2

如何将图像添加到网格,以便图像调整为网格大小。

看看Darryl的Stretch Icon

它将动态调整自身大小以填充标签可用的空间。

然后,可以将Icon用作启用Icon的on组件,而无需自定义绘画。

  ask by Computernerd translate from so

未解决问题?本站智能推荐:

1回复

调整JFrame的大小以适合JPanel

我有一个GUI,其中包含JFrame和菜单栏。 在JFrame内是我的自定义面板(扩展了JPanel),该面板最初是隐藏的。 用户选择一个图像(JFileChooser),该图像传递到面板并绘制(使用paintIcon)。 调整面板大小以适合图像,然后将其设置为可见。 我想调整JFram
3回复

Java动态调整图像大小以适合gridlayout中的网格

我想使用JButton的自定义子类制作国际象棋类型的棋盘。 我的问题是我的棋子图像太小了。 有没有一种方法可以使图像按比例缩放到我的网格布局中每个网格的大小? 如果我调整Jframe的大小,那么网格也会改变大小。 有没有一种方法可以使图像在调整整个帧的大小时动态调整大小?
1回复

Java Swing:使用图像调整JPanel的大小

我正在尝试调整已绘制到ImagePanel上的Image的大小(扩展了JPanel),但似乎无法正常工作。 我从互联网上获得了一些覆盖组件paint()方法的示例代码,我认为这可能是问题所在,这是我的代码。 我从...开始称呼它 (其中,此Blur中的width和height是
1回复

当我调整大小时,JPanel大小问题

我有以下代码来显示和绘制带有缓冲图像的JPanel 。 我将其大小设置为缓冲图像的大小,但它实际上没有设置。 它在我调整大小时显示滚动条,但是当我调整大小大于面板或BufferedImage JFrame时,当我单击面板大小之外时,我仍然会收到鼠标事件。 我省略了额外的代码。
1回复

Java GUI调整图像大小

我想调整已附加到某些面板上的多个imageIcons的大小,但是我不确定该怎么做。 经过大量研究,我尝试使用.getScaledInstance,但没有运气,这是我应该使用的吗? 由于我是在主类之外定义面板的,但是需要在多种方法中使用图像的缩放实例,因此我可以添加一行,例如 还是我需
1回复

调整Java Swing大小后图像变成黑色

好的,所以我正在设计与迷宫有关的游戏,现在正在处理GUI。 考虑到它将是NxN尺寸,我必须根据屏幕尺寸调整图像(迷宫的内容)的尺寸,因此无论迷宫尺寸如何,它都将保持不变。 我使用了这段代码: 不过有一个问题。 即使正确调整了尺寸(尺寸正确),新调整后的尺寸图像现在还是黑色(
1回复

调整大小后如何使图像保持原状?

我是Java的新手,我试图弄清楚如何在调整窗口大小后确保图像保持在屏幕上。 我尝试过在发布之前寻找答案,但似乎找不到我想要的东西。 最好的方法是什么,我应该怎么做? 这是我认为的“重要”代码:
2回复

调整应用程序窗口大小后,如何调整应用程序内图像的大小?

当我最大化应用程序时,JPanel内部的图像不会随之调整大小。 当窗口最大化时,如何调整JPanel及其内容? 编辑:我正在使用BufferedImage
1回复

如何在重新调整JFrame大小时制作可重新调整大小的图像? [关闭]

嗨,大家好我在java上做了一个游戏,我希望用户能够调整窗口大小而不会让图像搞得一团糟。 是否有一种特定的方法用于缩放图像以及JFrame和JFrame中的组件,在这种情况下是按钮,标签,面板等? BTW。 我知道如何缩放其他组件而不是图像
1回复

当窗口调整大小时,如何在JLabel中调整图像大小? 如何保持适当的规模?

假设我在JLabel中有一张图片。 这是我当前添加的方式: 我想调整标签的大小。 我该怎么做? 如何在保持比例的同时调整大小? 我可以编写一个小函数来获取图像的宽高比,获取标签的宽度和高度,找到两者中较小的一个(按比例)并手动计算新的高度和宽度。 那不是问题