按鈕圖形化,只需創建一個ImageIcon對象,將圖形路徑賦予ImageIcon對象,然後將該對象傳遞給按鈕即可。在此過程中涉及eclipse中圖形的路徑設置,包括(項目路徑下、非項目路徑下、相對路徑、絕對路徑),相對路徑前不加/,此處相對路徑是相對於eclipse中項目文件夾而言的,絕對路徑為圖形... ...
要將按鈕圖形化,只需創建一個ImageIcon對象,將圖形路徑賦予ImageIcon對象,然後將該對象傳遞給按鈕即可。
此處涉及eclipse中圖形的路徑設置,包括(項目路徑下、非項目路徑下、相對路徑、絕對路徑),相對路徑前不加/,此處相對路徑是相對於eclipse中項目文件夾而言的,絕對路徑為圖形所在未知的具體路徑。以picture1.jpg(在H:/java/workspace/study/src/picture路徑下)為例:
1.若將picture文件夾置於study/src路徑(非項目路徑)下:
1.1 絕對路徑: H:/java/workspace/study/src/picture/picture1.jpg
1.2 相對路徑: src/picture/picture1.jpg
2.若將picture文件夾置於study路徑(項目路徑)下:
2.1 絕對路徑不變: H:/java/workspace/study/picture/picture1.jpg
2.2 相對路徑: picture/picture1.jpg
package test; import javax.swing.*; import java.awt.*; import java.awt.event.*; import static net.mindview.util.SwingConsole.*; public class PictureLabel extends JFrame{ private static Icon[] pictures; private JButton jb,jb1 = new JButton("Disable"); private boolean mad = false; public PictureLabel() { pictures = new Icon[]{ new ImageIcon("src/picture/picture1.jpg"), //相對路徑 new ImageIcon("H:/java/workspace/study/src/picture/picture2.jpg"), //絕對路徑 new ImageIcon("src/picture/picture3.jpg"), new ImageIcon("src/picture/picture4.jpg"), new ImageIcon("src/picture/picture5.jpg") }; //路徑前不加/為相對路徑 jb = new JButton("JButton",pictures[3]); setLayout(new FlowLayout()); jb.addActionListener(new ActionListener(){ @Override//保證被標註的方法確實覆蓋了基類的方法,否則編譯會出錯 public void actionPerformed(ActionEvent e) { if(mad) { jb.setIcon(pictures[3]); mad = false; }else { jb.setIcon(pictures[0]); mad = true; } jb.setVerticalAlignment(JButton.TOP); jb.setHorizontalAlignment(JButton.LEFT); } }); jb.setRolloverEnabled(true); //允許翻轉圖標 jb.setRolloverIcon(pictures[1]); jb.setPressedIcon(pictures[2]); jb.setDisabledIcon(pictures[4]); jb.setToolTipText("Yow"); add(jb);
//如果 setRolloverEnabled 為 true,則當滑鼠移動到按鈕上時,setRolloverIcon的內容就被用到該按鈕的圖形上,即picture[1];
//當按下按鈕時,setPressedIcon的內容被用到該按鈕的圖形上,即picture[2];當按鈕被禁止時,setDisabledIcon的內容被應用到按鈕,
//即picture[4]。
jb1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { if(jb.isEnabled()) { jb.setEnabled(false); jb1.setText("Enable"); }else { jb.setEnabled(true); jb1.setText("Disable"); } } }); add(jb1); } public static void main(String[] args) { run(new PictureLabel(),500,200); } }
編譯可得按鈕具有動畫效果。
註意:1、相對路徑前不加/;
2、在eclipse中,程式中引入的文件的路徑是相對於項目文件夾而言的;