当前位置: 首页 > 知识库问答 >
问题:

如何将IMG大小调整到JPanel中

单于庆
2023-03-14

我正在做一个GUI,当你按下“下一步”按钮时,它会一个接一个地显示某个目录中的图像。

JButton btnNextImg = new JButton("Next IMG");
    btnNextImg.setBounds(96, 179, 110, 23);
    btnNextImg.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            if (i == nImg)
                i = 0;
            try {
                selectedImage = ImageIO.read(new File("C:\\IMAGES\\"+ String.valueOf(i+1) + ".jpg"));
                iSelect = new ImageIcon(selectedImage);
                originalImage.setIcon(iSelect);
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            i++;
        }
    });
    contentPane.add(btnNextImg);
JPanel panel = new JPanel();
    originalImage = new JLabel();
    panel.add(originalImage);
    panel.setBounds(5, 226, 309, 280);
    contentPane.add(panel);

共有1个答案

家西岭
2023-03-14

当我遇到同样的问题时,我在网上找到了一个图像面板:

public class ImagePanel extends JPanel {

private java.awt.Image image;
private boolean stretched = true;
private int xCoordinate;
private int yCoordinate;

public ImagePanel() {

}

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

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

public java.awt.Image getImage() {
    return image;
}

public void setImage(java.awt.Image image) {
    this.image = image;
    repaint();
}

public boolean isStretched() {
    return stretched;
}

public void setStretched(boolean stretched) {
    this.stretched = stretched;
    repaint();
}

public int getXCoordinate() {
    return xCoordinate;
}

public void setXCoodinate(int xCoordinate) {
    this.xCoordinate = xCoordinate;
}

public int getYCoordinate() {
    return xCoordinate;
}

public void setYCoordinate(int yCoordinate) {
    this.yCoordinate = yCoordinate;
    repaint();
}
}

要将图像添加到面板中,请使用如下所示:

ImagePanel imagePanel = new ImagePanel();
BufferedImage image = ImageIO.read(new File("C:\\IMAGES\\"+ String.valueOf(i+1) + ".jpg"));
imagePanel.setImage(image);
 类似资料:
  • 起初,我只有文本栏和状态栏,如下例所示(我不需要父容器): 这是应该的。但是,请记住状态栏的高度。现在,如果您将StatusBar类更改为下面的类,那么高度几乎会增加一倍。为什么会这样? 这种设置并不需要更多的垂直空间: 我可以让这成为一个新问题,但我觉得不值得...

  • 问题内容: 我有一个与作为布局经理。 在南边界中,我有一个,我希望用户可以调整其大小,即用户可以单击边界的边缘并将其向上拖动以使其变大。 您是否知道我可以做到这一点? 问题答案: 为了使框架中的面板可单独调整大小,您需要将其添加到。 而不是将其放置在框架的南部,而是将其放置在中心。拆分窗格将使拆分中的底部面板看起来像在南方,而拆分中的顶部面板将位于框架的中心。 确保使用设置两个面板的方向。 然后,

  • 问题内容: 我是Java的新手,开始学习挥杆技巧,并且在JFrame中调整JPanel的大小时遇到​​问题。我正在关注本教程: http://vincentramdhanie.blogspot.com/2009/11/cardlayout-with- netbeans.html 因为最终我将学习每种不同的布局,并且现在已经进入CardLayout。在上面,有一个JPanel用于状态面板。那也是我想

  • 我是Java新手,开始学习swing,在JFrame中调整JPanel的大小时遇到问题。我将学习本教程: http://vincentramdhanie.blogspot.com/2009/11/cardlayout-with-netbeans.html 因为最终我正在学习每一种不同的布局,现在我来到了CardLayout。在上面,有一个JPanel用于状态面板。这也是我想要做的,但是当我将一个J

  • 框架设计采用NetBeans进行。我尝试了所有的解决方案,比如将布局从BorderLayout更改为GridBagLayout,甚至是这里提到的那个。