Se voce é iniciante, vai ficar um pouco complicado.. mas vou explicar..
Crie uma sub-classe de button, com um booleano under
Adicione um mouse listener a ela
this.addMouseListener( new MouseListener() {
public void mouseEntered(java.awt.event.MouseEvent arg0) {
under = true;
repaint();
}
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent arg0) {
under = false;
repaint();
};
});
ate aqui, voce sabe qdo o mouse ta em cima do botao ou nao..
agora o mais dificil é sobreescrever o metodo paint...
vou dar um exemplo que eu fiz..
public void paint(Graphics g) {
if (under)
g.setColor(Color.GRAY);
if (isSelected())
g.setColor(Color.LIGHT_GRAY);
if (!under && !isSelected())
g.setColor(Color.WHITE);
Rectangle2D.Double square = new Rectangle2D.Double(0, 0, this.getSize()
.getWidth(), this.getSize().getHeight());
Graphics2D g2d = (Graphics2D) g;
g2d.fill(square);
g.setColor(Color.BLACK);
g2d.draw(square);
if (!under) {
g.setColor(Color.BLACK);
g2d.drawString(this.getText(), 5f, 15f);
} else {
g.setColor(Color.WHITE);
g2d.drawString(this.getText(), 5f, 15f);
}
}
voce pinta o fundo de acordo com o under..
use gradientes para conseguir akele efeito.. o botao normal é apenas um retangulo cinza
espero ter ajudado!