是否可以定位由 PaintComponent 方法绘制的 BufferedImage?例如,如果它是在重写的 PaintComponent 方法中绘制的图像,是否可以为此使用布局管理器(即 BoxLayout、BorderLayout、FlowLayout、GridBagConstrains、GridBagLayout)?还是您必须将图像转换为 JComponent(即 JLabel)?
1 回答
是否可以定位由 PaintComponent 方法绘制的 BufferedImage?
对的,这是可能的。您可以通过and在其paintComponent(...)
方法中获取绘图组件的尺寸,然后使用这些尺寸来定位事物。此外,该方法具有为您简化此操作的重载。getWidth()
getHeight()
Graphics#drawImage(...)
例如,如果它是在重写的 PaintComponent 方法中绘制的图像,是否可以为此使用布局管理器(即 BoxLayout、BorderLayout、FlowLayout、GridBagConstrains、GridBagLayout)?
不,不是直接的,因为布局管理器仅用于布局子组件。
还是您必须将图像转换为 JComponent(即 JLabel)?
您可以轻松地做到这一点——将您的 Image 放入 ImageIcon 和 JLabel 中,然后使用任何嵌套组件及其最有效的布局管理器将其放置在容器中。
编辑 1
你在评论中问:
我如何获得尺寸?
同样,在paintComponent(...)
方法内部只需调用getSize()
orgetHeight()
并且getWidth()
您已经获得了尺寸。真的没有什么比这更容易了。
你能提供你的第一个实例paintComponent(...)的代码片段吗?
我建议你先去。向我们展示您的一些可编译和运行的代码,并尝试演示您的问题,然后让我们处理它。