更改 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);
并指定大小即可。
经过大量研究后,我只能使用标签获得该板图像。现在我不能改变它的位置。我尝试了很多功能。我需要什么功能
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);
并指定大小即可。