我得到了一个JPanel
类,其方法paintComponent()
被覆盖绘制一个自定义图表。Swing:在JPanel中绘制图形会改变它的尺寸吗?
如果我画出比面板大的图形,面板的尺寸会拉长吗?
如果答案是否定的,我怎么能这样做?
我得到了一个JPanel
类,其方法paintComponent()
被覆盖绘制一个自定义图表。Swing:在JPanel中绘制图形会改变它的尺寸吗?
如果我画出比面板大的图形,面板的尺寸会拉长吗?
如果答案是否定的,我怎么能这样做?
如果我画比面板的图形更大请问面板的尺寸被拉长?
不,它不会伸展。
..我怎么能这么做?
最简单的方法:最好不要将图形绘制到涂料方法的逻辑的,把那个逻辑到画图正确大小的图像,然后显示在JLabel
图像。
我觉得它不会在我的解决方案中工作,因为在我的情况下需要交互式图形/ – user1038662 2014-11-25 05:43:17
*“我认为它不会在我的解决方案中工作,因为需要交互式图形”*您认为是错误的。显示在标签上的图像可以与面板上绘制的图形“交互”。 – 2014-11-25 05:46:02
我没有意识到这一点。我检查了我的代码,似乎可行。我会尝试这种方式。谢谢 – user1038662 2014-11-25 05:49:27
直接绘制不会影响组件的大小,您可以非常容易地绘制组件的可见边界之外。
通常,组件的大小由getPreferredSize
,getMinimumSize
和getMaximumSize
的组合确定,并且布局管理器已用于管理组件所在的容器。
如果您想影响面板的大小,您应该更改容器层次结构(大多数情况下)getPreferredSize
和invalidate
的返回结果。
您希望直接通过覆盖getPreferredSize
方法而不是依靠setPreferredSize
来做到这一点,因为这可以防止其他人改变它。
见Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing?更多细节
感谢您的评论,我看到重写getPreferredSize()是扩大面板的一种方法,但真的不知道如何。我如何获得将要绘制的Graphics对象的维度? – user1038662 2014-11-25 05:42:45
不,'Graphics'通常没有与它关联的大小组件。您可以使用组件的getWidth和getHeight方法检查组件的当前大小 – MadProgrammer 2014-11-25 05:43:58
*“如何获取将要绘制的Graphics对象的维度?”* Graphics对象具有没有维度。你正在绘制'Shape'的实例吗? – 2014-11-25 05:44:06
你是怎么做的?你想要在paintComponent()中绘制自定义图表的源代码? – BzH 2014-11-25 05:39:52