Java学习笔记之SWING -- 基本SWING程序(地图编辑器框架的显示地图的改进)

前言:哎,上次因为弄到凌晨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号地形或者是种种种种,地形绝对不能存在这种不确定性。可以自己想想有什么办法哟~嘿嘿,有好的方法可以推荐哟~我也是临时想的那,呵呵。(考虑一个比较经济环保的方法,提示一下:最优二叉树!嘿嘿,然后直接保存成二进制文件,地图文件又小人家又难以编辑研究——没有你的地图编辑器可不行,呃,这个是吧,就是还要编个数据结构……嘿嘿,以后慢慢捣鼓吧)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值