在Java中,要實現JLabel文本的旋轉,可以使用Graphics2D類的rotate方法。以下是一個簡單的示例:
import javax.swing.*;
import java.awt.*;
public class RotatedJLabel extends JLabel {
private double angle;
public RotatedJLabel(String text, double angle) {
super(text);
this.angle = angle;
}
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// 獲取當前字體的寬度和高度
FontMetrics fm = g2d.getFontMetrics();
int width = fm.stringWidth(getText());
int height = fm.getHeight();
// 計算旋轉后的文本位置
int x = (getWidth() - width) / 2;
int y = (getHeight() + height) / 2;
// 旋轉文本
g2d.rotate(Math.toRadians(angle), getWidth() / 2, getHeight() / 2);
g2d.drawString(getText(), x, y);
// 重置旋轉狀態
g2d.rotate(-Math.toRadians(angle), getWidth() / 2, getHeight() / 2);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("Rotated JLabel Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
RotatedJLabel label = new RotatedJLabel("Hello, World!", 45);
frame.add(label);
frame.setVisible(true);
});
}
}
在這個示例中,我們創建了一個名為RotatedJLabel
的自定義JLabel類,它接受一個額外的參數angle
,表示文本旋轉的角度。在paintComponent
方法中,我們使用Graphics2D
對象的rotate
方法來旋轉文本。注意,在旋轉文本之后,我們需要重置旋轉狀態,以便其他組件正常顯示。