为什么 setLocation() 不移动我的标签?

发布于 2024-09-19 11:34:33 字数 513 浏览 5 评论 0原文

我有以下代码,尝试将 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);
    }
}

它似乎并没有移动到我想要的地方。

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();
        setVisible(true);
    }
}

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

毁我热情 2024-09-26 11:34:33

问题是面板的 LayoutManager 正在为您设置标签的位置。

您需要做的是将布局设置为 null:

public GUI() {
    setLayout(null);
}

这将使框架不会尝试自行布局组件。

然后调用 setBounds(矩形) 在标签上。像这样:

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

这应该将组件放置在您想要的位置。

但是,如果您没有充分的理由自行布局组件,那么使用 LayoutManagers 对您有利通常是更好的主意。

这里是一个关于如何开始使用 的精彩教程布局管理器。

如果您必须不使用 LayoutManager 这里是一个很好的教程,无需使用即可。

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.

肩上的翅膀 2024-09-26 11:34:33

您将位置代码放在框架下,它就会起作用,但如果您希望它确实起作用
将位置代码放入 run while 循环中。这就是我所做的来弄清楚它并且有效。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文