버튼 그래픽을 만들려면 ImageIcon 개체를 만들고 ImageIcon 개체에 그래픽 경로를 할당한 다음 해당 개체를 버튼에 전달하면 됩니다.
여기에는 (프로젝트 경로 아래, 비프로젝트 경로 아래, 상대 경로, 절대 경로), /가 앞에 오지 않는 상대 경로, 상대 경로를 포함하여 Eclipse의 그래픽 경로 설정이 포함됩니다. 여기서는 Eclipse를 기준으로 한 것입니다. 프로젝트 폴더의 경우 절대 경로는 그래픽이 있는 알 수 없는 특정 경로입니다. pictureJava 그래픽 인터페이스의 그래픽 버튼 (H:/java/workspace/study/src/picture 경로 아래)를 예로 들어보겠습니다:
1. 그림 폴더를 (프로젝트 경로가 아닌) Study/src 경로 아래에 놓으면 ):
1.1 절대 경로: H:/java/workspace/study/src/picture/pictureJava 그래픽 인터페이스의 그래픽 버튼
1.2 상대 경로: src/picture/pictureJava 그래픽 인터페이스의 그래픽 버튼
2.그림 폴더를 스터디 경로(프로젝트 경로) 아래에 놓는 경우:
2.1 절대 경로는 변경되지 않습니다: H:/java/workspace/study/picture/pictureJava 그래픽 인터페이스의 그래픽 버튼
2.2 상대 경로: picture/pictureJava 그래픽 인터페이스의 그래픽 버튼
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/pictureJava 그래픽 인터페이스의 그래픽 버튼"), //相对路径 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에서 프로그램에 소개된 파일의 경로는 상대 경로입니다. 프로젝트 파일에 클리핑 측면에서