如何在 Java 中旋转 JLabel 文本?

awtjavaobject oriented programmingprogrammingswing

JLabel JComponent  类的子类,JLabel 的对象提供 GUI 上的文本说明或信息。JLabel 可以显示一行只读文本图像或同时显示文本图像JLabel  可以显式生成 PropertyChangeListener  接口。 

默认情况下,JLabel 可以在水平位置显示文本,我们可以通过在 paintComponent() 中实现 Graphics2D  类的 rotate() 方法来旋转 JLabel 文本 

语法

public abstract void rotate(double theta, double x, double y)

示例

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
public class RotateJLabelTest extends JFrame {
   public RotateJLabelTest() {
      setTitle("Rotate JLabel");
      JLabel label = new RotateLabel("TutorialsPoint");
      add(label, BorderLayout.CENTER);
      setSize(400, 300);
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setVisible(true);
   }
   private class RotateLabel extends JLabel {
      public RotateLabel(String text) {
         super(text);
         Font font = new Font("Verdana", Font.ITALIC, 10);
         FontMetrics metrics = new FontMetrics(font){};
         Rectangle2D bounds = metrics.getStringBounds(text, null);
         setBounds(0, 0, (int) bounds.getWidth(), (int) bounds.getHeight());
      }
      @Override
      public void paintComponent(Graphics g) {
         Graphics2D gx = (Graphics2D) g;
         gx.rotate(0.6, getX() + getWidth()/2, getY() + getHeight()/2);
         super.paintComponent(g);
      }
   }
   public static void main(String[] args) {
      new RotateJLabelTest();
   }
}

输出


相关文章