如何在JLabel中垂直显示文本?(Java 1.6)

如何在JLabel中垂直显示文本?(Java 1.6),第1张

如何在JLabel中垂直显示文本?(Java 1.6)

我找到了以下页面:http
:
//www.java2s.com/Tutorial/Java/0240__Swing/VerticalLabelUI.htm。

我不知道您是否希望字母彼此“站立”或全部旋转。

import java.awt.Dimension;import java.awt.FontMetrics;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Insets;import java.awt.Rectangle;import java.awt.geom.AffineTransform;import javax.swing.Icon;import javax.swing.JComponent;import javax.swing.JLabel;import javax.swing.plaf.basic.BasicLabelUI;public class VerticalLabelUI extends BasicLabelUI {    static {        labelUI = new VerticalLabelUI(false);    }    protected boolean clockwise;    public VerticalLabelUI(boolean clockwise) {        super();        this.clockwise = clockwise;    }    public Dimension getPreferredSize(JComponent c) {        Dimension dim = super.getPreferredSize(c);        return new Dimension( dim.height, dim.width );    }    private static Rectangle paintIconR = new Rectangle();    private static Rectangle paintTextR = new Rectangle();    private static Rectangle paintViewR = new Rectangle();    private static Insets paintViewInsets = new Insets(0, 0, 0, 0);    public void paint(Graphics g, JComponent c) {        JLabel label = (JLabel)c;        String text = label.getText();        Icon icon = (label.isEnabled()) ? label.getIcon() : label.getDisabledIcon();        if ((icon == null) && (text == null)) { return;        }        FontMetrics fm = g.getFontMetrics();        paintViewInsets = c.getInsets(paintViewInsets);        paintViewR.x = paintViewInsets.left;        paintViewR.y = paintViewInsets.top;        // Use inverted height & width        paintViewR.height = c.getWidth() - (paintViewInsets.left + paintViewInsets.right);        paintViewR.width = c.getHeight() - (paintViewInsets.top + paintViewInsets.bottom);        paintIconR.x = paintIconR.y = paintIconR.width = paintIconR.height = 0;        paintTextR.x = paintTextR.y = paintTextR.width = paintTextR.height = 0;        String clippedText = layoutCL(label, fm, text, icon, paintViewR, paintIconR, paintTextR);        Graphics2D g2 = (Graphics2D) g;        AffineTransform tr = g2.getTransform();        if (clockwise) { g2.rotate( Math.PI / 2 ); g2.translate( 0, - c.getWidth() );        } else { g2.rotate( - Math.PI / 2 ); g2.translate( - c.getHeight(), 0 );        }        if (icon != null) { icon.paintIcon(c, g, paintIconR.x, paintIconR.y);        }        if (text != null) { int textX = paintTextR.x; int textY = paintTextR.y + fm.getAscent(); if (label.isEnabled()) {     paintEnabledText(label, g, clippedText, textX, textY); } else {     paintDisabledText(label, g, clippedText, textX, textY); }        }        g2.setTransform( tr );    }}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5132994.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存