如何使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);