2015-03-13 213 views
-1

经过大量研究,我只能使用标签获取该图像。现在我无法改变它的位置。我尝试了很多功能。我需要什么确切的功能更改JLabel的位置

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); 
    } 
} 
+0

你想达到什么目的? – 2015-03-13 19:07:49

+0

你对布局有什么想法吗? – emin 2015-03-13 19:08:14

+0

我正在开发一个垄断应用程序,这个图像是我的董事会。董事会现在在中心。我希望它在框架的左上部分。 – Mehr 2015-03-13 19:17:21

回答

0

首先:您不应该手动移动组件。这应该留给布局管理者。但是你可以。您面临的基本问题是 - 或者至少我认为是这样 - :您的董事会仍然有一个布局管理器集合,它将继续布局董事会,并且由于此举(以及处理大小)您是组件。在定位标签和指定尺寸之前,请致电setLayout(null);,它应该可以工作。

+0

当我添加setLayout(null)时,我的图像消失了。我看不到我的形象。所以我没有使用它。还是谢谢。 – Mehr 2015-03-13 19:31:25

+0

糟糕透顶,我忘记了这一点:layoutmanager也处理组件的大小。既然你是layoutmanager走了,你也必须这样做。设置你的板子的大小,一切都应该很好 – Paul 2015-03-13 19:48:42

+0

哦!现在好多了。我会用你的。不知何故,我觉得它是更好的:) – Mehr 2015-03-13 19:53:05

2

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

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

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

本教程还对How to Use Borders的部分。

+0

非常感谢。 – Mehr 2015-03-13 19:31:47