【问题标题】:How to resize image Height to JFrame Height?如何将图像高度调整为 JFrame 高度?
【发布时间】:2013-11-17 22:49:16
【问题描述】:

我的图像对于我的 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);
}
    }

【问题讨论】:

  • 我想注意的是,您在实际内容窗格中没有任何内容之前设置了大小。
  • 我已经编辑了代码以使其更清晰
  • 你可以看看thisthis

标签: java image swing user-interface jframe


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您可以尝试覆盖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);
            }
        };
    

    【讨论】:

      猜你喜欢
      • 2011-04-09
      • 2017-03-10
      • 1970-01-01
      • 1970-01-01
      • 2021-02-14
      • 2014-11-06
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      相关资源
      最近更新 更多