-
Notifications
You must be signed in to change notification settings - Fork 1
BotonAnimacion
EduardoProfe edited this page Sep 27, 2023
·
6 revisions
Clase visual que permite el modelado de un botón con animación al ser presionado.
Esta clase hereda de JButton
.
Este componente se visualiza mejor con los lafs de FlatLaf.
Preview de Componente en la Prueba Visual:
- Constructores
- Atributos de interés
- Métodos de interés
- Ejemplo de Uso
- Código Fuente
- Clases utilizadas (Importaciones)
-
Arquetipo:
BotonAnimacion()
-
Descripción: Permite construir el componente visual
BotonAnimacion
. -
Particularidades: El componente es creado con
background
de color blanco, y con un color de efecto conrgb(173,173,173)
-
Ejemplo de uso:
BotonAnimacion btn = new BotonAnimacion();
-
Arquetipo:
Color colorEfecto
-
Descripción:
Color
que determina el color de la animación. - Métodos Relacionados: Getter de Color de Efecto y Setter de Color de Efecto
-
Arquetipo:
getColorEfecto()
-
Descripción: Permite obtener el
Color
de la animación. - Atributos Relacionados: Color de Efecto
-
Ejemplo de uso:
Color colorEfecto = new BotonAnimacion().getColorEfecto();
-
Arquetipo:
setColorEfecto(Color)
-
Parámetros:
Color
de la animación. -
Descripción: Permite cambiar el
Color
de la animación. -
Particularidades: No se guardan los colores que sean
null
, sino que se mantiene el valor anteriormente guardado. - Atributos Relacionados: Color de Efecto
-
Ejemplo de uso:
BotonAnimacion btn = new BotonAnimacion(); btn.setColorEfecto(Color.RED);
public class Prueba extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private BotonAnimacion btn;
public Prueba() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
btn = new BotonAnimacion();
btn.setForeground(Color.CYAN);
btn.setFont(new Font("Tahoma", Font.PLAIN, 18));
btn.setText("Hola");
btn.setBackground(Color.RED);
btn.setColorEfecto(Color.YELLOW);
btn.setBounds(113, 120, 130, 76);
contentPane.add(btn);
}
}
public class BotonAnimacion extends JButton {
private static final long serialVersionUID = 1L;
public Color getColorEfecto() {
return colorEfecto;
}
public void setColorEfecto(Color colorEfecto) {
if(colorEfecto!=null)
this.colorEfecto = colorEfecto;
}
private Animator animator;
private int tamMaxBtn;
private float tamAnim;
private Point puntoPresionado;
private float alpha;
private Color colorEfecto = new Color(173, 173, 173);
public BotonAnimacion() {
setContentAreaFilled(false);
setBorder(new EmptyBorder(5, 5, 5, 5));
setBackground(Color.WHITE);
setCursor(new Cursor(Cursor.HAND_CURSOR));
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent m) {
tamMaxBtn = Math.max(getWidth(), getHeight()) * 2;
tamAnim = 0;
puntoPresionado = m.getPoint();
alpha = 0.5f;
if (animator.isRunning()) {
animator.stop();
}
animator.start();
}
});
TimingTarget tiempoPreferido = new TimingTargetAdapter() {
@Override
public void timingEvent(float fraccion) {
if (fraccion > 0.5f) {
alpha = 1 - fraccion;
}
tamAnim = fraccion * tamMaxBtn;
repaint();
}
};
animator = new Animator(400, tiempoPreferido);
animator.setResolution(0);
}
@Override
protected void paintComponent(Graphics grphcs) {
int ancho = getWidth();
int alto = getHeight();
BufferedImage img = new BufferedImage(ancho, alto, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = img.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(getBackground());
g2.fillRoundRect(0, 0, ancho, alto, alto, alto);
if (puntoPresionado != null) {
g2.setColor(colorEfecto);
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));
g2.fillOval((int) (puntoPresionado.x - tamAnim / 2), (int) (puntoPresionado.y - tamAnim / 2), (int) tamAnim, (int) tamAnim);
}
g2.dispose();
grphcs.drawImage(img, 0, 0, null);
super.paintComponent(grphcs);
}
}
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.RenderingHints;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import javax.swing.JButton;
import javax.swing.border.EmptyBorder;
import org.jdesktop.animation.timing.Animator;
import org.jdesktop.animation.timing.TimingTarget;
import org.jdesktop.animation.timing.TimingTargetAdapter;
- Página Principal
- Bibliotecas usadas
- Descarga de la api
- Importación de la api
- Vinculación del
JavaDoc
- Vinculación del
Archivo Source
- Prueba Visual de la api
- Documentación de las clases de la api:
-
Componentes Visuales
AvatarCircular
BotonAnimacion
CampoCIValidado
CarruselImagenes
Imagen
ImagenAnimada
JLabelAnimacion
JLabelHora
JLabelMultilineaMultialineado
JTextFieldModificado
Linea
Notificaciones
NotificacionesModernas
PanelAnimacionCurvas
PanelBordeOval
PanelGradiente
PanelGradienteH
PanelGradienteV
RelojAnalogico
- Utilidades
- Algoritmos
- Modelos
-
Componentes Visuales
Nota: Algunas imágenes tardan un tiempo prolongado en cargarse en dependencia de la velocidad de conexión a Intenet.