09 febrero 2006

Un botón girado

En java podemos heredar de JButton o cualquier otro componente y redefinir el método paint() para que el componente se dibuje como queramos.

Una opción fácil usando la clase AffineTransform consiste en hacer que el botón se gire, por ejemplo 45 grados. El siguiente código de ejemplo hace eso precisamente. Muestra una ventana con un botón girado 45 grados.

package chuidiang.ejemplos;

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class EtiquetaGirada extends JButton
{
public void paint (Graphics g)
{
// Para girar
AffineTransform at = new AffineTransform();
at.scale(0.6,0.6); // Se reduce el tamaño para que quepa girado
at.translate (80,0); // Se traslada para que quede centrado
at.rotate(45*Math.PI/180); // Se rota 45 grados
((Graphics2D)g).setTransform(at);
super.paint(g);
}

public Dimension getPreferredSize()
{
return new Dimension (100,100);
}

public static void main(String [] args)
{
JFrame v = new JFrame();
v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
EtiquetaGirada l= new EtiquetaGirada();
l.setText("hola");
l.setFont(l.getFont().deriveFont((float)30.0));
v.getContentPane().setLayout(new FlowLayout());
v.getContentPane().add(l);
v.pack();
v.setVisible(true);
}
}

Y este es el resultado



Bueno, no queda demasiado allá, pero es cuestión de arreglarlo un poquito.

No hay comentarios: