在上面的代码中,e.getSource() instanceof JButton用来判断产生的事件是否是由JButton型的控件产生的,然后又将产生事件源的控件进行强制型类转换,再使用Integer.parseInt(button.getActionCommand())方法将取得的事件名称转化为整数,后面的代码就将这个整数还原成行和列的信息。 好了,现在运行程序,然后点击每个按钮,看看是否会出现如右图的对话框? 注意哦,我们的下标是从0开始的。本期程序源代码(点击下载)。 在Swing中使用图片 目前我们已经解决了用户操作的问题。为了让界面美观起来,我们需要使用图片来代替文字。有时间和耐心的朋友可以自己做个性图片,只是要注意保持每张图片大小一致,否则就太难看啦。想省事的话也可以直接使用下载包中提供的图片。 在Swing中,可以使用setIcon(Image image)方法来为JButton设置图片,其中的参数image就是我们要设置的图片对象,这个对象有多种方法可以得到: ·使用Toolkit类来获得: image = Toolkit.getDefaultToolkit().getImage(url); ·使用ImageIcon类的getImage()方法来获得: image = new ImageIcon(getClass().getResource(filename)).getImage(); 我们这里选用第一种方法。为了方便今后再次获得Image对象,我们可以将此写为一个函数: Image getImage(String filename){ URLClassLoader urlLoader = (URLClassLoader) this.getClass().getClassLoader(); URL url = null; Image image = null; url = urlLoader.findResource(filename); image = Toolkit.getDefaultToolkit().getImage(url); return image; } 有了这个函数之后,以后再要用到图片就方便多了,不是吗? 图片现在已经有了,那么我们就可以将源代码包中Map.Java中的地图信息用图片的形式表现出来了。由于此段代码是关于游戏的算法代码,因此不再列举代码,在这里大致解释一下具体是怎么做的吧!在Map.Java中,我们使用了二维数组map[][]来保存图片信息,同时,我们也使用了一维数组images[]来保存每一个图片对象,map中的每一个元素都有一个值,这个值不仅表明了在游戏界面中按钮对应的值,也表明了这个按钮使用images[]数组中图片的编号,程序运行界面便漂亮许多。 小结 今天我们介绍了Swing中JButton控件。对于大多数Swing控件来说,JButton的用法一样可以照搬过去。别小看这个JButton,当你能够很好地掌握它的时候,你的Swing功底就已经提升一个台阶了。此外,我们也学会了在Java中加载图片文件的两种方法。最后,我们还将以上的两部分内容结合在一起创造出了漂亮的游戏界面。虽然我没有在这里写出完整的代码,但相信大家参考我的源程序,经过自己的努力,一定能够达到目标。如果遇到解决不了的问题,可以通过leftmoon@163.com信箱与我联系。 不知道大家对今天的内容感觉到满意吗?精彩还在后面,大家要继续光顾我们的咖啡馆哦! |