画图板中遇到的问题
仿xp系统的画图板还在继续,这期间也碰到了一些问题并及时解决了,现整理如下:
(一)调整窗体中组件大小的方法和添加图标的方法
1.在画图板上我们需要添加许多大大小小的按钮,并往里面添加图片,这里就需要用到按钮调整大小的方法,然而我们发现当调用button.setSize()的时候并没有改变按钮的大小,这是因为setSize只能用于顶级容器,当一些组件需要改变的时候应该调用的是其setPreferred()方法,使用方法如下:
button.setPreferredSize(new Dimension(25,25));
2.当按钮调节完毕后就需要往里面添加图片了,这里需要两个步骤:一、导入图片。二、往按钮添加图片。只需要简单的两个语句即可。方法如下:
ImageIcon icon = new ImageIcon("drawImage.jpg"); //定义图片对象
button.setIcon(icon); //设置按钮图标
(二)鼠标拖拽监听的方法
之前实现画直线、矩形和椭圆的时候使用的是MouseListener监听器,但是其中只能监听鼠标的进入、离开、按下、施放、点击的五种事件,当我们希望实现铅笔的时候,发现它已经不能满足我们的需求,即监听鼠标的拖拽。这里需要引入一个新的监听器:MouseMotionListener。这个监听器可以监听鼠标的拖拽和移动。实现接口应覆盖两个方法:mouseDragged(MouseEvent e)和mouseMoved(mouseEvent e)
(三)使用equals比较字符串时注意的一点
因为当一个字符串调用equals方法时,如果字符串为null则会出现空指针异常,所以在程序中为了避免这个异常,当需要使用一个字符串变量去和一个字符串常量做比较时,我们可以把常量放在前面,即用常量去调用equals方法,这样就避免了当没有初始化字符串变量时的空指针异常。如:
"空指针异常".equals(command); //command为一个字符串变量
(四)获取画布方法放置位置
前一篇博客也有写获取画布的方法应该放在窗口可见之后,不然会提示Graphics空指针异常,现在又发现窗口可见这个方法应该放在窗口添加完组件之后,不然会使组件显示不全。
由此发现初始化窗口的程序中一定要注意各个语句的顺序,不然会产生一些意想不到的错误。