ホームページ  >  記事  >  类库下载  >  Java グラフィカル インターフェイスのグラフィカル ボタン

Java グラフィカル インターフェイスのグラフィカル ボタン

高洛峰
高洛峰オリジナル
2016-10-17 09:13:562128ブラウズ

ボタンをグラフィックにするには、ImageIcon オブジェクトを作成し、ImageIcon オブジェクトへのグラフィック パスを指定して、そのオブジェクトをボタンに渡します。

これには、Eclipse のグラフィックスのパス設定が含まれます (プロジェクト パス下、非プロジェクト パス下、相対パス、絶対パス)。ここでの相対パスは、相対パスです。つまり、絶対パスは、グラフィックが配置されている不明な特定のパスです。例として、picture1.jpg (パス H:/java/workspace/study/src/picture の下) を取り上げます。

1. ピクチャー フォルダーを Study/src パス (プロジェクト パスではなく) に配置する場合:

1.1 絶対パス: H:/java/workspace/study/src/picture/picture1.jpg 1.2 相対パス: src/picture/picture1.jpg 2. スタディパス (プロジェクトパス) の下に画像フォルダーを配置する場合:

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 では、プログラムに導入されるファイルのパスはプロジェクト フォルダーに対する相対パスです。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。