2012-05-15 58 views
1

我有一個JPanel,其中我需要在所需座標處添加一堆JLabel。這些JLabel將分配給他們的關鍵聽衆將使用箭頭鍵確定新位置。將JLabel放置在所需位置並給出其座標

更具體地說,我知道如何做到這一點,當只有一個JLabel,但每當我把更多的東西搞砸了。而我使用箭頭鍵移動第一個JLabel,但所有其他JLabel消失。

任何人都可以給我一些提示,寫一種方法把JLabel放在一個特定的座標中,也可以在以後使用箭頭鍵移動它們而不會使其他JLabel消失嗎?提前

+1

我想,你需要發佈一些相關的代碼片段。 –

+0

發佈[SSCCE](http://sscce.org) – COD3BOY

+0

嘗試將所有標籤添加到列表中,並在箭頭鍵事件標籤中通過列表並移動它們。如果你想自己移動每一個標籤,你應該實施某種「選擇」方法來知道哪一個要移動。發佈代碼的相關部分可以幫助我們......幫助您:) – mastaH

回答

1

您可以嘗試使用JDesktopPane或JLayeredPane,它與JPanels的工作方式相同,但不會使用佈局,因此您將使用佈局,您必須始終設置像這樣的jlabel的邊界。

JLabel label = new JLabel("Hello"); 
label.setBounds(0, 0, 100, 20); 
//label.setBounds(x, y, width, height); 
pane.add(label) 

,如果你需要移動標籤,那麼你可以使用像

int xx = label.getBounds().getX(); 
int yy = label.getBounds().getY(); 
int ww = label.getBounds().getWidth(); 
int hh = label.getBounds().getHeight(); 

//to the right 10 units 
xx+=10; 
label.setBounds(xx, yy, ww, hh); 
+0

謝謝這幾乎是我發現了..是的,這有效.. .. –

0

非常非常感謝我假設你正在使用repaint()更新UI。順便說一下,你打電話給哪個組件repaint()

+1

「SwingWorker」與OP需要什麼有什麼關係? :) –

+0

據此調整。我在想用戶界面上也發生了一些事情,但後來才意識到它就像是一個設計界面的畫布。 –

+0

我沒有使用repaint()其實我在NetBeans上做了我的項目,所以我只寫了移動JLabel的方法。這工作正常,直到我添加另一個JLabel。 –

相關問題