我有一個JPanel
,其中我需要在所需座標處添加一堆JLabel
。這些JLabel
將分配給他們的關鍵聽衆將使用箭頭鍵確定新位置。將JLabel放置在所需位置並給出其座標
更具體地說,我知道如何做到這一點,當只有一個JLabel
,但每當我把更多的東西搞砸了。而我使用箭頭鍵移動第一個JLabel
,但所有其他JLabel
消失。
任何人都可以給我一些提示,寫一種方法把JLabel
放在一個特定的座標中,也可以在以後使用箭頭鍵移動它們而不會使其他JLabel
消失嗎?提前
我有一個JPanel
,其中我需要在所需座標處添加一堆JLabel
。這些JLabel
將分配給他們的關鍵聽衆將使用箭頭鍵確定新位置。將JLabel放置在所需位置並給出其座標
更具體地說,我知道如何做到這一點,當只有一個JLabel
,但每當我把更多的東西搞砸了。而我使用箭頭鍵移動第一個JLabel
,但所有其他JLabel
消失。
任何人都可以給我一些提示,寫一種方法把JLabel
放在一個特定的座標中,也可以在以後使用箭頭鍵移動它們而不會使其他JLabel
消失嗎?提前
您可以嘗試使用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);
謝謝這幾乎是我發現了..是的,這有效.. .. –
非常非常感謝我假設你正在使用repaint()
更新UI。順便說一下,你打電話給哪個組件repaint()
?
「SwingWorker」與OP需要什麼有什麼關係? :) –
據此調整。我在想用戶界面上也發生了一些事情,但後來才意識到它就像是一個設計界面的畫布。 –
我沒有使用repaint()其實我在NetBeans上做了我的項目,所以我只寫了移動JLabel的方法。這工作正常,直到我添加另一個JLabel。 –
我想,你需要發佈一些相關的代碼片段。 –
發佈[SSCCE](http://sscce.org) – COD3BOY
嘗試將所有標籤添加到列表中,並在箭頭鍵事件標籤中通過列表並移動它們。如果你想自己移動每一個標籤,你應該實施某種「選擇」方法來知道哪一個要移動。發佈代碼的相關部分可以幫助我們......幫助您:) – mastaH