2013-05-05 90 views
0

我有一個30x30的JPanel GridLayout。因此30x30幀中的每個Cell都是帶有Image的JPanel。在地圖上又名瓷磚。在GridLayout中移動組件

我需要在keyPress上圍繞此地圖移動我的角色(紅色JPanel)。

我該怎麼做?我沒有看到在GridLayout中更換組件的方法:S

另外,是否有比替換組件更好的方法,因爲如果我替換它,我必須跟蹤舊組件,以便在角色移動到下一個圖塊,它將替換該角色以前的舊組件。

+0

您可以使用框架玻璃窗格或「JXLayer」之類的東西來覆蓋網格窗格頂部的角色。可以更好地讓你在網格上的面板自定義繪製背景,然後「添加」字符... – MadProgrammer 2013-05-06 00:23:00

回答

1

GridLayout不是您的問題的好方案。原因:GridLayout將始終按照您編寫「container.add(component)」語句的順序對組件進行排序。除了在之前的所有地方插入虛擬組件之外,您不能將組件放置在特定位置。

您可能想嘗試GridBagLayout ..在GridBagLayout中,您要做的關鍵事件就是更新動態面板的位置,並將顯示在該位置的固定面板的頂部。無需記住舊部件

+0

嘗試編寫一些代碼,讓我們知道你是否面臨任何問題 你可以閱讀GridBagLayout在:http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html – Mady 2013-05-05 23:56:57

+0

我使用GridBagLayout後面的這個例子:http://stackoverflow.com/questions/3695402/gridbaglayout-equally-分佈式單元 我將如何覆蓋我的動態面板? – Brandon 2013-05-06 00:31:07

+0

我幾乎完成了一個示例程序,但必須趕上..會寫幾個小時的代碼 – Mady 2013-05-06 01:18:23

1

我該怎麼做?我沒有看到在GridLayout中更換組件的方法

爲什麼您需要更換組件?只需更換圖像。

您需要跟蹤最後一個組件並保存其圖像。然後,當你移動到一個新的正方形,您:

一)恢復舊的圖像 B)保存新的圖像 c)您的紅色圖像添加到位置。