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

如何使图像全尺寸而不是仅放大中心?
我的图片名为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 

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

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

查看Stretch Icon (或ShrinkIcon具体取决于哪个更符合您的要求)。 随着标签大小的变化,此图标将动态resize。 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);