即使最大化,我的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);
}
}
答案 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);
}
};