如何调整图像高度到JFrame高度?

时间:2013-11-17 22:49:16

标签: java image swing user-interface jframe

即使最大化,我的JFrame图像也太高了。我想动态调整它的大小,以便图像永远不会被JFrame的顶部或底部剪切。我已将图像作为ImageIcon插入JLabel中。我试过设置最大尺寸无济于事。如何确保图像的高度永远不会大于JFrame?理想情况下,我希望保持高宽比不变。图像处于纵向。有什么想法吗?

public class myClass extends JFrame {   
private void initGUI(){
    pane = getContentPane();
    pane.setLayout(new BorderLayout());

    next = new JButton("Next");


    previous = new JButton("Previous");

    page = new JLabel(loadImg());
    page.setMaximumSize(this.getSize());
    pane.add(next, BorderLayout.EAST);
    pane.add(previous, BorderLayout.WEST);
    pane.add(page, BorderLayout.CENTER);
}
    }

2 个答案:

答案 0 :(得分:1)

  

理想情况下,我希望保持高宽比不变。

查看Darryl的Stretch Icon。它会根据可用空间缩小/增长,同时保持宽高比。

答案 1 :(得分:0)

您可以尝试覆盖paintComponent(Graphics g)方法并自行绘制已调整大小的图像。

    page = new JLabel(loadIMG()){
        @Override
        paintComponent(Graphics g)
        {
            //So we don't kill default behaviour
            super.paintComponent(g);

            int scaledWidth, scaledHeight;

            //pseudo-code
            scale and store into scaledWidth and scaledHeight;

           render with g.drawImage(icon, x, y, scaledWidth, scaledHeight, null);
        }
    };