鼠标的移入移出效果
继承JButton,使用borderFactory类,当鼠标移入、移出、被点击时有不同的外观。
import javax.swing.*;
import javax.swing.border.*;
import java.awt.event.*;
import java.awt.*; 
/** *//**
* JButton类按钮的一种扩展,当鼠标移入、移出、被点击时有不同的外观
*/
public class ZButton extends JButton 

{
private Border borderOut;
private Border borderIn;
private Border borderPressed; 
public ZButton() 
{
init();
} 
/** *//**初始化*/
private void init() 
{
borderOut = BorderFactory.createEmptyBorder(); borderIn=BorderFactory.createTitledBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED,Color.white,Color.white, new Color(148, 145, 140),new Color(103, 101, 98)),"鼠标进入",TitledBorder.CENTER,TitledBorder.BELOW_TOP);
borderPressed=BorderFactory.createTitledBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.white,Color.white,new Color(148, 145, 140),new Color(103, 101, 98)),"鼠标摁下",TitledBorder.CENTER,TitledBorder.BELOW_TOP);
this.setBorder( borderOut ); 
this.addMouseListener(new java.awt.event.MouseAdapter() 
{ 
public void mouseEntered(MouseEvent e)
{
thisButton_mouseEntered(e);
} 

public void mouseExited(MouseEvent e)
{
thisButton_mouseExited(e);
} 

public void mousePressed(MouseEvent e)
{
thisButton_mousePressed(e);
} 

public void mouseReleased(MouseEvent e)
{
thisButton_mouseReleased(e);
} 
});
} 
/** *//**鼠标移入时的外观*/ 
void thisButton_mouseEntered(MouseEvent e)
{
if( this.isEnabled() )
this.setBorder( borderIn );
} 
/** *//**鼠标移出时的外观*/ 
void thisButton_mouseExited(MouseEvent e)
{
this.setBorder( borderOut );
} 
/** *//**鼠标被点击时的外观*/ 
void thisButton_mousePressed(MouseEvent e)
{
if( this.isEnabled())
this.setBorder( borderPressed );
} 
/** *//**鼠标被释放时的外观*/
void thisButton_mouseReleased(MouseEvent e) 
{
if( (this.getBounds().contains(e.getX(), e.getY())) && this.isEnabled() )
this.setBorder( borderIn );
else
this.setBorder( borderOut );
} 

}
import javax.swing.*;
import javax.swing.border.*;
import java.awt.event.*;
import java.awt.*;

public class Test
{
public Test()
{
JFrame f= new JFrame();
Container contentPane=f.getContentPane();
ZButton a=new ZButton();
contentPane.add(a);
f.setTitle("just a test");
f.setSize(new Dimension(200,80));
f.setVisible(true);
}


public static void main(String []args)
{
Test q=new Test();
}
}