如何使JLabel成为图像图标的完整大小?

时间:2015-04-18 18:12:38

标签: java user-interface

如何使我的图像全尺寸而不是放大中心?
我的图片名为1-12.jpg。

这是我的代码:

import java.awt.*;
import javax.swing.*;
import javax.swing.border.BevelBorder;
public class GuiApp extends JFrame{

  public static void main(String [] args){

     final JFrame shirts = new JFrame("T-shirts");

        JPanel panel = new JPanel(new GridLayout(4, 4, 3, 3));

        for (int i = 1; i < 13; i++) {
            JLabel l = new JLabel(new ImageIcon("T-shirts/"+i+".jpg"), JLabel.CENTER);
            l.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
            l.setFont(l.getFont().deriveFont(20f));
            panel.add(l);
        }//end of for loop

        shirts.setContentPane(panel);
        shirts.setSize(1000, 1000);
        shirts.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        shirts.setVisible(true);

  }//end of method
}//end of class

1 个答案:

答案 0 :(得分:1)

  

如何将图像设为全尺寸而不是仅放大中心?

通过这个我假设你的意思是如何缩小图像以便它完全显示在网格上的可用空间中?

结帐Stretch Icon(或ShrinkIcon,具体取决于哪个更符合您的要求)。随着标签大小的变化,此图标将动态调整大小。 StretchIcon允许您按比例缩放图标(默认)或填充可用空间。

由于GridLayout使所有组件的大小相同,因此图标的大小也相同。

基本代码应为:

//JLabel l = new JLabel(new ImageIcon("T-shirts/"+i+".jpg"), JLabel.CENTER);
StretchIcon icon = new StretchIcon("T-shirts/"+i+".jpg");
JLabel l = new JLabel(icon, JLabel.CENTER);