1、利用JLabel的icon來顯示圖片
基本思路就是把要顯示的圖片設定為JLabel的表徵圖setIcon(icon),然後設定JLabel的文本和邊框為null
public class ImageLabel extends JLabel { public ImageLabel(String img) { this(new ImageIcon(img)); } public ImageLabel(ImageIcon icon) { setIcon(icon); //setMargin(new Insets(0,0,0,0)); setIconTextGap(0); //setBorderPainted(false); setBorder(null); setText(null); setSize(icon.getImage().getWidth(null), icon.getImage().getHeight(null)); }}
2、當然還可以重寫paintComponent方法將整個組件畫成圖片,這樣JPanel是不錯的選擇
public class ImagePanel extends JPanel { private Image img; public ImagePanel(String img) { this(new ImageIcon(img).getImage()); } public ImagePanel(Image img) { this.img = img; Dimension size = new Dimension(img.getWidth(null),img.getHeight(null)); setPreferredSize(size); setMinimumSize(size); setMaximumSize(size); setSize(size); setLayout(null); } public void paintComponent(Graphics g) { g.drawImage(img,0,0,null); }}
要說和JLabel的icon有什麼不同的話,JLabel是整圖顯示,而使用drawImage的話更靈活一些,比如要對圖片進行放大縮小,就可以簡單的利用drawImage的高度和寬度參數
public abstract boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer);