我有以下代码,我尝试将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);
}
}
它似乎没有移动到我想要的地方。
答案 0 :(得分:25)
问题是面板的LayoutManager
正在为您设置标签的位置。
您需要做的是将布局设置为null:
public GUI() {
setLayout(null);
}
这将使框架不会尝试自行布局组件。
然后在标签上拨打setBounds(Rectangle)
。像这样:
addLbl.setBounds(new Rectangle(new Point(200, 300), addLbl.getPreferredSize()));
这应该将组件放在您想要的位置。
然而,如果您没有一个非常好的理由自己布置组件,通常最好使用LayoutManagers
为您工作。
Here是开始使用LayoutManager
s。
如果你必须没有LayoutManager
here,这是一个很好的教程,无需一个人。
答案 1 :(得分:0)
您将位置代码放在框架下,它会起作用但是如果您希望它可以正常工作 将位置代码放在run while循环中。这就是我做的事情,但它确实有效。