相关疑难解决方法(0)

旋转Swing JLabel

我目前正在尝试实现一个Swing组件,继承JLabel该组件应该只是代表一个可以垂直定向的标签.

从这开始:

public class RotatedLabel extends JLabel {

    public enum Direction {
        HORIZONTAL,
        VERTICAL_UP,
        VERTICAL_DOWN
    }

private Direction direction;
Run Code Online (Sandbox Code Playgroud)

我认为改变以下结果是个好主意getPreferredSize():

@Override
public Dimension getPreferredSize() {
    // swap size for vertical alignments
    switch (getDirection()) {
        case VERTICAL_UP:
        case VERTICAL_DOWN:
            return new Dimension(super.getPreferredSize().height, super
                .getPreferredSize().width);
        default:
            return super.getPreferredSize();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后Graphics在我卸载绘画之前简单地转换对象JLabel:

@Override
protected void paintComponent(Graphics g) {
    Graphics2D gr = (Graphics2D) g.create();

    switch (getDirection()) {
        case VERTICAL_UP:
            gr.translate(0, getPreferredSize().getHeight());
            gr.transform(AffineTransform.getQuadrantRotateInstance(-1));
            break;
        case VERTICAL_DOWN:
            // …
Run Code Online (Sandbox Code Playgroud)

java swing jlabel

7
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×1

jlabel ×1

swing ×1