在 Java GUI 開發中,Swing 相較於 AWT 最大的優勢之一,就是能夠方便地在組件上顯示圖片。無論是按鈕、標籤還是選單項目,Swing 組件都支援直接設定圖示,讓介面設計更加靈活美觀。
建立一般按鈕時,我們習慣傳入文字:
JButton button = new JButton("Click me");
若要在按鈕上顯示圖片,只需使用 ImageIcon 類別:
ImageIcon buttonIcon = new ImageIcon("button.gif", "按鈕背景圖片說明");
JButton button = new JButton(buttonIcon);
注意必須使用 ImageIcon 而非 Image 類別。ImageIcon 的第二個參數是對圖示的文字描述,未來可能被輔助技術(如螢幕閱讀器)使用,有助於無障礙存取。
若需同時顯示文字與圖片,可使用雙參數建構子:
JButton button = new JButton("Click me", buttonIcon);
更進一步,可透過第三個參數控制圖片相對文字的位置:
JButton button = new JButton("Click me", buttonIcon, JButton.CENTER);
常用的位置常數包括:LEFT、RIGHT、TOP、BOTTOM、CENTER、LEADING、TRAILING 等。
預設的 Java 咖啡杯圖示是否讓你厭倦?自訂視窗圖示的方法因 Applet 與 Application 而異:
Image img = getImage(getCodeBase(), "title.gif");
setIconImage(img);
Application 需先透過 ImageIcon 載入再轉為 Image:
URL imgURL = getClass().getResource("title.gif");
ImageIcon icon = new ImageIcon(imgURL);
setIconImage(icon.getImage());
這裡使用 getClass().getResource() 而非直接檔案路徑,確保打包成 JAR 檔後仍能正確載入資源。
ImageIcon 建構子的路徑支援相對路徑、絕對路徑與 URLgetResource() 載入掌握這些技巧,即可讓 Swing 介面擁有豐富的視覺表現力。