在任意(x,y)坐标处放置组件

9

我希望能够在JPanel中随机位置(x,y)放置一些按钮,而这些布局类很麻烦。

在Swing中是否可能实现?


4
最好学习不同的布局管理器 - trashgod
1
不,你绝对不想手动进行任何Swing布局。而且,除非你认为学习本身很烦人,否则没有什么关于layoutManagers让人讨厌的地方;-) - kleopatra
1
为什么每个人都在对操作员提出质疑?也许他只是需要完全控制按钮的位置(例如在某种游戏中,它们会移动并且用户必须击中它们)。 - fortran
1
@fortran "完全控制按钮" 如果您具备在逻辑上维护该“控制”的所需逻辑 - 请将其放入自定义布局管理器中。 - Andrew Thompson
1
@AndrewThompson 为什么?如果我只是想随机地摆放它们,把它放在自定义布局管理器中有什么优势? - fortran
在另一个问题中发布一个实际的(可工作的)示例,我可能会愿意进一步讨论它。*“可工作”是指适用于可调整大小的GUI中的各种组件和PLAF。 - Andrew Thompson
2个回答

13

如果使用空布局,您可以设置坐标:

panel.setLayout(null);
Button b = new Button(....);
panel.add(b);
b.setSize(width, height);
b.setLocation(x,y);

但是强烈建议使用布局。如果您正确理解它们,布局类并不会让人感到烦恼,而是您的好伙伴。

我建议阅读有关GridBagLayout的教程,它很容易理解(有点像HTML表格),并且非常强大。


推荐使用布局管理器加1分,手工不完整地进行布局则扣0.5分(哈哈,非常证明了管理器的实用性... :-)。 - kleopatra

5

3
那是我在编辑前写的内容,但后来我意识到有人可能会尝试寻找一个叫做那个名字的班级 ^_^ - fortran
@kleopatra,你遇到了什么问题? - fortran
1
没有问题,宣传 null 布局的使用是错误的 :-) - kleopatra
1
参见setLayout(null)从来不是必要的。永远不是! 了解更多讨论。 - Andrew Thompson
@AndrewThompson 当你真正需要手动放置组件时,创建一个自定义的LayoutManager来执行与null layout相同的操作似乎会增加不必要的层次和复杂性。 - fortran
尝试一下(并使其在链接线程中概述的各种情况下适用于“null”布局)以找出不同之处。 - Andrew Thompson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接