前言:哎,上次因為弄到淩晨4點快了,自己又超級困了,就沒怎麼仔細弄,關於這個地圖顯示還是有很多問題的,比如當你縮放視窗的時候,那些圖片之間(也就是JLabel的jlMap)之間會出現空隙 ,怎樣才能解決這個問題呢?其實方法有很多,比如設定每個JLabel的Border(其實只是想想而已,沒實踐過),不過我是給這個jpIcon設定一個布局,為GridLayout設定參數,把JLabel之間的空隙設定為零,當然它分上下和左右,只要這樣設定一下後,這個jpIcon內部的JLabel就會乖乖得靠緊了,嘿嘿。還有就是EAST方向上的按鈕肯定是大胖子一樣,恢複不到按鈕本來的大小,這是因為GirdLayout內部只管把控制項展開填滿,所以這次再給個還原控制項本身大小的改進方案,不過和塞圖片到CENTER方位的方法大同小異,都是再添加層中間容器JPanel,然後對其採用FlowLayout布局就OK拉~嘿嘿,哇,已經加了好多的JPanel了,頭有點暈暈的。這次只做一個簡單的補充和改進,下次再動大手腳。
這裡給出對大架構的BorderLayout中的CENTER地區中的jpIcon的布局做修改,使得其內部的JLabel都沒有空隙:
e.g. :
jpIcon = new JPanel(new GridLayout(HEIGHT,WIDTH,0,0));
for(int i = 0, j = 0; i<HEIGHT*WIDTH; i++)
...{
j = rand.nextInt(4);
jlMap = new JLabel(ls.LANDSTYLES[j]);
jpIcon.add(jlMap);
}
構造jpIcon的時候就是用了GridLayout布局,前面兩個是高和寬,後面兩個參數分別是上下和左右組件之間的空隙。
接下來是對EAST方位的組件大小問題的改進了,大致思路前言裡面也已經說了,所以這裡就直接給出代碼了。
e.g. :
jpEast = new JPanel(new GridLayout(0,1));
jpEastCo = new JPanel(new FlowLayout());
jpEastCo.add(jbIcon);
jpEast.add(jpEastCo);
jpEastCo = new JPanel(new FlowLayout());
jpEastCo.add(jbSave);
jpEast.add(jpEastCo);
jpEastCo = new JPanel(new FlowLayout());
jpEastCo.add(jbLoadMapFromFile);
jpEast.add(jpEastCo);
jpEastCo = new JPanel(new FlowLayout());
jpEastCo.add(jtf);
jpEast.add(jpEastCo);
jpEastCo = new JPanel(new FlowLayout());
jpEastCo.add(jlTips);
jpEast.add(jpEastCo);
這裡又聲明了一個新的JPanel:jpEastEo,裡面是真正放按鈕啊文本地區的容器,而且一個裡面只放一個控制項(有點浪費啊,只調用一次add)。由於add進去的是對象執行個體(純粹個人理解,有誤之處請大家更正),而不是reference,所以這個jpEastCo可以重複使用,而且放入後修改指向也不會使得上次add進去的東西改變掉。注意前面對jpEast的布局中採用GridLayout(0,1),其中的0代表可以有任意列,1代表只有一行。前面參數設定列,後面的參數設定行。
這樣應該比較好了已經,上次遺留下來的兩個BUG算是基本解除了,接下來要著手地圖檔案的格式問題了,也就是用什麼來儲存地形的資訊了。首先用數字肯定不行,除非地形少於兩位元,也就是所最多隻有10個地形,那麼可以用阿拉伯數字表示地形。如果有超過10個以上的地形,那麼讀取地形檔案的時候對124這個一塊的資料分別不出到底是代表1號2號4號地形還是1號24號地形或者是種種種種,地形絕對不能存在這種不確定性。可以自己想想有什麼辦法喲~嘿嘿,有好的方法可以推薦喲~我也是臨時想的那,呵呵。(考慮一個比較經濟環保的方法,提示一下:最優二叉樹!嘿嘿,然後直接儲存成二進位檔案,地圖檔案又小人家又難以編輯研究——沒有你的地圖編輯器可不行,呃,這個是吧,就是還要編個資料結構……嘿嘿,以後慢慢搗鼓吧)。