java圖形界面之圖形化按鈕


      要將按鈕圖形化,只需創建一個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中,程序中引入的文件的路徑是相對於項目文件夾而言的;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM