Как перевернуть JLabel в Java Swing: примеры и методы

Чтобы перевернуть JLabelв Java Swing, вы можете использовать различные методы. Вот несколько подходов:

  1. Использование класса AffineTransform:

    import javax.swing.*;
    import java.awt.*;
    import java.awt.geom.AffineTransform;
    public class FlipLabelExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Flip Label Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
        JLabel label = new JLabel("Hello, World!");
        label.setFont(label.getFont().deriveFont(Font.BOLD, 20));
        // Create an AffineTransform with scaling and flipping
        AffineTransform transform = AffineTransform.getScaleInstance(-1, 1);
        transform.translate(-label.getWidth(), 0);
        label.setTransform(transform);
        frame.getContentPane().add(label);
        frame.setSize(300, 200);
        frame.setVisible(true);
    }
    }
  2. Использование пользовательского подкласса JLabel:

    import javax.swing.*;
    import java.awt.*;
    public class FlippableLabel extends JLabel {
    private boolean flipped = false;
    public FlippableLabel(String text) {
        super(text);
    }
    @Override
    protected void paintComponent(Graphics g) {
        if (flipped) {
            Graphics2D g2 = (Graphics2D) g;
            g2.scale(-1, 1);
            g2.translate(-getWidth(), 0);
        }
        super.paintComponent(g);
    }
    public void setFlipped(boolean flipped) {
        this.flipped = flipped;
        repaint();
    }
    }

Использование:

FlippableLabel label = new FlippableLabel("Hello, World!");
label.setFont(label.getFont().deriveFont(Font.BOLD, 20));
label.setFlipped(true);

Обратите внимание, что приведенные выше примеры демонстрируют, как перевернуть JLabelпо горизонтали в Java Swing. Если вы хотите добиться вертикального переворота или других преобразований, вам необходимо соответствующим образом изменить код.