【问题标题】:Why doesn't setLocation() move my label?为什么 setLocation() 不移动我的标签?
【发布时间】:2020-04-02 00:57:51
【问题描述】:

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

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

【问题讨论】:

    标签: java swing layout-manager


    【解决方案1】:

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

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

    public GUI() {
        setLayout(null);
    }
    

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

    然后调用标签上的setBounds(Rectangle)。像这样:

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

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

    但是,如果您没有充分的理由自己布置组件,则最好使用LayoutManagers 来为您工作。

    Here 是一个很好的使用 LayoutManagers 的入门教程。

    如果你必须不带LayoutManager here 是一个很好的不带的教程。

    【讨论】:

    • +1 给他问题的答案,但让他知道这不是做事的好方法
    【解决方案2】:

    您将位置代码放在框架下,它会起作用,但如果您希望它确实起作用 将位置代码放在运行 while 循环中。这就是我为弄清楚它所做的工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-25
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多