/*
* 本程序实现以下效果:
* 1、界面显示一个按钮,按钮初始为红色。
* 2、将鼠标移到按钮上时,按钮呈蓝色。
* 3、点击鼠标,有声音效果。
* 4、鼠标离开按钮时,按钮恢复成红色。
*/
import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class ImgBtn{
private JFrame frm = null; // 框架窗体
private Container contentPane = null; // 内容窗格
private JLabel imgLab = null;
private ImageIcon redBtn = null; // 红色按钮图片
private ImageIcon blueBtn = null; // 蓝色按钮图片
private AudioClip ac = null; // 声音文件
public ImgBtn(){
frm = new JFrame("图形按钮");
contentPane = frm.getContentPane();
redBtn = new ImageIcon(frm.getClass().getResource("/images/btn_red.png"));
blueBtn = new ImageIcon(frm.getClass().getResource("/images/btn_blue.png"));
ac = Applet.newAudioClip(frm.getClass().getResource("/sounds/ding.wav"));
imgLab = new JLabel(redBtn); // 初始为红色按钮
contentPane.add(imgLab);
// 鼠标事件
frm.addMouseListener(new MouseAdapter(){
// 鼠标移到按钮上
public void mouseEntered(MouseEvent e){
imgLab.setIcon(blueBtn); // 变成蓝色按钮
}
// 鼠标移出按钮
public void mouseExited(MouseEvent e){
imgLab.setIcon(redBtn); // 变成红色按钮
}
// 单击鼠标
public void mouseClicked(MouseEvent e){
ac.play(); // 播放声音
}
});
frm.setSize(new Dimension(NULL,150)); // 设置窗体大小
frm.setResizable(false); // 禁止用户调整窗体大小
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 使用 System.exit() 退出程序
frm.setLocationRelativeTo(null); // 设置窗体居中
frm.setVisible(true); // 设置窗体可见
}
public static void main(String [] args){
new ImgBtn();
}
}
程序运行效果如下:
其中,MANIFEST.MF 文件是为了打包用的,其内容如下:
Manifest-Version: 1.0
Created-By: C.S.Ricen
Main-Class: ImgBtn
程序打包的方法如下(这里将图片和声音文件也一并打包):
打包生成的 Jar 文件其实是一个可执行文件,如果机子上有安装 JRE 的话,对于 Windows 用户可以通过双击直接运行;对于 Linux 用户需要赋予 Jar 文件可执行的权限。