ボタンをグラフィックにするには、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 では、プログラムに導入されるファイルのパスはプロジェクト フォルダーに対する相対パスです。