gpt4 book ai didi

java - 旋转 JLabel 文本的垂直方向

转载 作者:行者123 更新时间:2023-12-02 07:15:25 25 4
gpt4 key购买 nike

我尝试根据选定的角度 30、90 等旋转 JLabel 文本。我编写了 CustomJLabel 类:

public CustomJLabel extends JLabel {

private int angle=360; //setter and getters

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Rectangle rectangle = g2d.getClipBounds();
g2d.rotate((getAngle() * java.lang.Math.PI) / 4, rectangle.getCenterX(), rectangle.getCenterY());
}
}

Main.java:

CustomJLabel cst=new CustomJLabel ();
cst.setAngle(value);
cst.repaint();
cst.setSize(getPrefferedsize());

运行上面的代码时。它根据角度正确旋转文本。但它的矩形形状不正确。请检查下面的图片。

水平 (360)

Horiztal(360)

垂直 (90)

enter image description here

enter image description here

请观察红色圆圈且图像垂直 90 度并检查。以下是 JLabel 缺少的顶行和底行。为什么不见了?

最佳答案

回想一下Graphics指定以下内容:

Operations that draw the outline of a figure operate by traversing an infinitely thin path between pixels with a pixel-sized pen that hangs down and to the right * of the anchor point on the path.

当您使用恒等变换绘制具有由 getClipBounds() 返回的尺寸的 矩形 时,它将在右侧和底部被裁剪。当您使用不同的变换绘制相同的矩形时,结果将以部分取决于舍入误差的方式被剪裁。

* 添加了强调。

关于java - 旋转 JLabel 文本的垂直方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14988573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com