C'è un modo per ruotare il testo di Swing come in una JLabel tra 0 e 360 (o tra -180 e 180) gradi con incrementi di 1 grado?Come ruotare il testo Swing?
risposta
Sì. Guarda Graphics2D.rotate(). Per una JLabel, penso che potresti sovrascrivere il metodo paintComponent() per chiamare ruotare (x), quindi chiamare il paintcomponent() esistente, quindi chiamare ruotare (-x). per esempio.
protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.rotate(theta);
super.paintComponent(g2);
g2.rotate(-theta);
}
Non ho provato questo. Potrebbe essere necessario aggiungere un offset, vedere Graphics2D.rotate (doppia theta, doppie x, double y)
Non credo che Swing offra supporto esplicito per questo.
Tuttavia, è possibile trasformare il testo in un'immagine e ruotarlo utilizzando la classe AffineTransform.
Ecco alcuni example code, apparentemente tratti dal libro "Swing Hacks", per scrivere il testo all'indietro. Puoi facilmente modificarlo per ruotare il testo, anche se dovrai aggiungere del codice per l'effetto di animazione.
Non JLabel ma JEditorPane contenuti http://java-sl.com/vertical.html
+1. Ho appena provato e funziona. Ma ruota intorno all'origine, quindi è necessaria anche una traduzione - assumendo che il poster voglia ruotare attorno al centro del testo. –
Grazie per averlo testato! Felice che funzioni. – user949300
+1 Vedere anche questo [esempio] (http://stackoverflow.com/a/6333584/230513). – trashgod