开发者

Why doesn't setLocation() move my label?

I have the following code where I try to place a JLabel in a custom location on a 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();
        setVisi开发者_开发技巧ble(true);
    }
}

It doesn't seem to be moving to where I want it.


The problem is that the LayoutManager of the panel is setting the location of the label for you.

What you need to do is set the layout to null:

public GUI() {
    setLayout(null);
}

This will make it so the frame does not try to layout the components by itself.

Then call setBounds(Rectangle) on the label. Like so:

addLbl.setBounds(new Rectangle(new Point(200, 300), addLbl.getPreferredSize()));

This should place the component where you want it.

However, if you don't have a really great reason to lay out the components by yourself, it's usually a better idea to use LayoutManagers to work in your favor.

Here is a great tutorial on getting started with using LayoutManagers.

If you must go without a LayoutManager here is a good tutorial for going without one.


You put the location code under the frame and it will work but if you want it to work for sure put the location code in a run while loop. That's what I did to figure it out and it works.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜