2015-03-13 251 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