在使用布局时,如何在框架中移动组件?我试过这个:
System.out.println(test1.getLocation());
int oy = test1.getY();
int ox = test1.getX();
oy++;
ox++;
test1.setLocation(ox, oy);
validate();
test1.validate();
System.out.println(test1.getLocation());
第一个位置与最后一个位置相同。我知道你在布局中通常不能改变位置,但是你如何实现它呢?我之前问了一个类似的问题,从来没有得到答案。我已经在互联网上搜索了这个,但我还没找到答案。
TL; DR - 如何移动组件?
答案 0 :(得分:3)
问题是面板的LayoutManager
正在为您设置标签的位置。
您需要做的是将布局设置为null
:
setLayout(null);
这样可以使框架/面板不会尝试自行布局组件。
然后在标签上拨打setBounds(Rectangle rect)
。像这样:
lbl.setBounds(new Rectangle(new Point(200, 300), lbl.getPreferedSize()));
这应该将组件放在您想要的位置。
但是,如果您没有一个非常好的理由自己布置组件,通常最好使用LayoutManager
s对您有利。
答案 1 :(得分:3)
可以帮助您查看DragLayout并与@camickr
答案 2 :(得分:2)
将布局设置为setLocation()
时,null
方法有效。如果您使用的是布局管理器,那么可以选择从容器中删除组件并使用新的布局约束将其添加回来。