为什么setLocation()不移动标签?
问题内容:
我有以下代码,尝试将放在JLabel
自定义位置JFrame
。
public class GUI extends JFrame
{
/**
*
* @param args
*/
public static void main(String args[])
{
new GUI();
}
/**
*
*/
public GUI()
{
JLabel addLbl = new JLabel("Add: ");
add(addLbl);
addLbl.setLocation(200, 300);
this.setSize(400, 400);
// pack();
setVisible(true);
}
}
它似乎并没有移动到我想要的位置。
问题答案:
问题在于LayoutManager
面板的正在为您设置标签的位置。
您需要将布局设置为null:
public GUI() {
setLayout(null);
}
这样就可以使框架不会尝试自行布局组件。
然后调用setBounds(Rectangle)
标签。像这样:
addLbl.setBounds(new Rectangle(new Point(200, 300), addLbl.getPreferredSize()));
这应该将组件放置在所需位置。
但是 ,如果您没有很好的理由自己布置组件,那么通常最好使用它LayoutManagers
来帮您忙。
这是有关使用LayoutManager
s
的出色教程。
如果您必须不带一个,LayoutManager
这里是一个不带一个的很好的教程。