所以我在这些论坛上搜索这个问题的答案,但似乎找不到答案。
首先让我说明我完全理解为什么使用null布局管理器是一个坏主意,在这种情况下我基本上没有选择。我正在使用遗留代码库,尝试编写自定义布局管理器来执行正确的布局会非常耗时。一些相关信息:
代码流程如下:
其中一种子组件是一个或多个JLabel对象。这是我遇到问题的对象。在某些情况下,对JLabel的setLocation()函数的调用将具有x = 52和y = 0的值,但是JLabel被放置在x = 0,y = 0的位置。我已经确认该位置不是被代码的其他一些区域重置为0,0所以现在我想到了Java实现中可能存在一些引起问题的模糊错误。否则,为什么它不尊重对setLocation()的调用?
我要确认代码的任何其他区域都没有在JLabel上调用setBounds()。在没有使用布局管理器时,还有其他调用会影响组件的位置吗?
答案 0 :(得分:1)
对于绝对定位,您必须考虑三个步骤,您已经通过将布局设置为null
完成了第一步。
下一步是每当您向容器添加组件时,您都要在该组件上使用setBounds(x,y,width,height)
方法。
您只使用了setLocation()
方法而未设置按钮的大小,如果您希望按钮可显示,则还必须使用setSize(width,height)
方法。
毕竟,不要忘记调用Component类的repaint()
方法。
答案 1 :(得分:0)
我在java中使用setLocation()做了一些实验 https://dl.dropboxusercontent.com/u/27670533/ani_test.rar
这是src文件好好看看它们可能有帮助