2011-12-19 24 views

Respuesta

9

Sí. Mira Graphics2D.rotate(). Para un JLabel, creo que podría anular el método paintComponent() para llamar a rotar (x), luego llamar al existente paintComponent(), luego llamar a rotar (-x). p.ej.

protected void paintComponent(Graphics g) { 
    Graphics2D g2 = (Graphics2D)g; 
    g2.rotate(theta); 
    super.paintComponent(g2); 
    g2.rotate(-theta); 
} 

No he probado esto. Es posible que tenga que añadir un offset, ver Graphics2D.rotate (doble theta, dobles x, doble y)

+0

1. Lo intenté y funciona. Pero gira alrededor del origen, por lo que también se necesita una traducción, suponiendo que el póster quiere rotar alrededor del centro del texto. –

+0

¡Gracias por probarlo! Me alegro de que funcione. – user949300

+0

+1 Consulte también este [ejemplo] (http://stackoverflow.com/a/6333584/230513). – trashgod

2

No creo que Swing ofrezca un soporte explícito para esto.
Sin embargo, puede convertir su texto en una imagen y rotarlo, utilizando la clase AffineTransform.

Aquí hay algunos example code, aparentemente tomados del libro "Swing Hacks", para escribir el texto al revés. Puede modificarlo fácilmente para rotar el texto, aunque deberá agregar algún código para el efecto de animación.