【问题标题】:Can you create a JPanel that is rotated?你能创建一个旋转的JPanel吗?
【发布时间】:2014-01-31 16:48:11
【问题描述】:

我想知道是否有办法使用 Java Swing 创建旋转的 JPanel? 我已经阅读了有关此主题的其他问题/答案,但我不明白您是否可以创建一个已经旋转的问题/答案。 它一旦创建就不需要旋转,只需在 x/y 轴上倾斜创建。 谢谢。

谢谢,很有帮助!

【问题讨论】:

标签: java swing rotation jpanel


【解决方案1】:

默认情况下您无法获得此行为。但是,如果您做一点线性代数,您可以扩展 JPanel 并获得所需的旋转行为:

  1. 覆盖paint(Graphics g) 方法。您可以先将其绘制到BufferedImage 的实例上,然后使用旋转矩阵旋转该图像,然后再将其绘制到底层面板上。

  2. 覆盖所有处理鼠标输入的方法,并将反向旋转应用于关联侦听器传入的坐标。这样,底层布局管理器仍然“认为”面板没有旋转,但是您已经旋转了绘图和事件通知,因此事情仍然正确“排列”。

我会警告所有这一切,说我以前从未这样做过,您可能会遇到此处未列出的意外问题,但我确实有大约 10 年的 Java Swing 经验,这就是我的想法如果我必须这样做。

【讨论】:

  • 我通过重写paint方法并使用Graphics2D旋转图形对象然后用图形对象调用super来尝试了第一部分。一开始看起来还可以,但当它检测到任何鼠标输入并将组件重新绘制回原始位置时,它就会变得一团糟。
【解决方案2】:

据我所知,您无法旋转 JPanel 本身。但是,您也许可以在 JPanel 内旋转图像。

【讨论】:

    猜你喜欢
    • 2022-10-14
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多