更改 JLabel 的位置

Changing a JLabel's position

经过大量研究后,我只能使用标签获得该板图像。现在我不能改变它的位置。我尝试了很多功能。我需要什么功能

public class Board extends JFrame {
    private ImageIcon image;
    private JLabel label;

    public Board() {
        image = new ImageIcon(getClass().getResource("board.png"));
        label = new JLabel(image);
        label.setLocation(200, 0);  //This is the one that I expected to do the thing
        add(label);
    }

    public static void main(String [] args) {
        Board b = new Board();
        b.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        b.setVisible(true);
        b.setSize(1280, 1000);
    }
}

不要尝试手动设置组件的位置。 Swing 旨在与布局管理器一起使用。阅读 Using Layout Managers 上的 Swing 教程部分了解更多信息。

定位组件的一种方法是给组件一个Border。所以你可以这样做:

label.setBorder( new EmptyBorder(200, 0, 0, 0) );

本教程还有一个关于 How to Use Borders 的部分。

首先:您不应该手动移动组件。这应该留给布局管理器。但是你可以。您面临的基本问题是 - 或者至少我是这样认为的 - :您的电路板仍然有一个布局管理器集,它将继续布局电路板并且由于这个原因也会移动(并处理您的组件的大小) .只需在定位标签之前调用 setLayout(null); 并指定大小即可。