【问题标题】:PaintComponent with a Layout Manager带有布局管理器的 PaintComponent
【发布时间】:2013-02-09 11:45:50
【问题描述】:

是否可以定位由 PaintComponent 方法绘制的 BufferedImage?例如,如果它是在重写的 PaintComponent 方法中绘制的图像,是否可以为此使用布局管理器(即 BoxLayout、BorderLayout、FlowLayout、GridBagConstrains、GridBagLayout)?还是必须将图像转换为 JComponent(即 JLabel)?

【问题讨论】:

  • 是的,我看过了。非常感谢!

标签: java image swing layout paintcomponent


【解决方案1】:

是否可以定位由 PaintComponent 方法绘制的 BufferedImage?

是的,这是可能的。您可以通过getWidth()getHeight() 在其paintComponent(...) 方法中获取绘图组件的尺寸,然后使用这些尺寸来定位事物。此外,Graphics#drawImage(...) 方法的重载可以为您简化此操作。

例如,如果它是在重写的 PaintComponent 方法中绘制的图像,是否可以为此使用布局管理器(即 BoxLayout、BorderLayout、FlowLayout、GridBagConstrains、GridBagLayout)?

不,不是直接的,因为布局管理器仅用于布置子组件。

或者您是否必须将图像转换为 JComponent(即 JLabel)?

您可以轻松做到这一点 - 将您的 Image 放入 ImageIcon 和 JLabel 中,然后使用任何嵌套组件及其最有效的布局管理器将其放置在容器中。

编辑 1
您在评论中提问:

我如何获得尺寸?

同样,在 paintComponent(...) 方法内部,只需调用 getSize()getHeight()getWidth() 即可获得您的尺寸。真的没有什么比这更容易了。

您能否提供您的第一个实例paintComponent(...) 的sn-p 代码?

我建议你先去。向我们展示您的一些可编译和运行的代码,并尝试演示您的问题,然后让我们着手处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-29
    • 2013-05-03
    • 1970-01-01
    • 2018-06-12
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多