第四讲绘制图形与鼠标、键盘事件主要内容在组件上绘制图形鼠标事件处理键盘事件处理在组件上绘制图形任何组件上都可以绘制自定义图形, 一般使用面板(JPanel)来绘图。图形设备类java.awt.Graphics类其中定义了若干绘制图形的方法其实例由运行系 统自动创建如何获得图形设备?Java运行系统在显示Swing组件时,会自动调用组件的paintComponent(Graphi csg)方法只要覆盖这个方法,就可以得到Graphics的实例g了绘制文本Java中可以通过图形方式显示文本。示例:在面 板上绘制文本。TestDrawString.java在面板(组件)上绘制文本需要做两件事情:定义自己的面板类,继承JPanel 覆盖paintComponent(Graphicsg),通过g来绘制图形。注意:在绘图前要调用super.paintComp onent(g),来进行初始绘图绘制文本绘制文本的方法voiddrawString(Strings,intx, inty)图形坐标系设置字体java.awt.Font类的实例表示一种字体。示例:TestFont.java构造方法 publicFont(Stringname,intstyle,intsize)其中name为字体名,可以选 择TimesRoman、Courier、Serif、Dialog等,style为字体风格,可以选择Font.PLAIN、Font. BOLD和Font.ITALIC,这些风格可以组合使用。size为字体大小。比如: FontmyFont=newFon t("Serif",Font.PLAIN,16); FontmyFont=newFont("Serif",Font.B OLD+Font.ITALIC,18);设置颜色java.awt.Color类的实例表示一种颜色。示例:TestColor .java构造方法:publicColor(intr,intg,intb)三个参数分别代表红、绿、蓝三原色, 它们的取值介于0~255之间,0表示最暗,255表示最亮,也就是说全零表示黑色,反之为白色。Color中的常量Color.r ed、Color.blue和Color.yellow等表示一种颜色绘制几何图形通过图形设备g可以绘制直线、矩形、圆和多边形等几 何图形。示例:TestDrawFigures.java练习请编写一个Application,实现如图所示的界面。提示:在图 形界面坐标(20,30)处以绿色显示“我喜欢绿色。”,在坐标(20,60)处以蓝色显示“我也喜欢蓝色。”。鼠标事件(Mou seEvent)所有GUI组件都会产生鼠标事件对应两个监听接口MouseListener负责监听和处理:鼠标按下、释放、点 击、进入、和离开等情况MouseMotionListener负责处理:鼠标移动和拖动触发的鼠标事件MouseListen erMouseListener中有5个事件处理方法publicvoidmousePressed(MouseEvente) ;publicvoidmouseReleased(MouseEvente);publicvoidmouseClick ed(MouseEvente);publicvoidmouseEntered(MouseEvente);public voidmouseExited(MouseEvente);MouseEvent中获取鼠标事件信息方法publicint getX()publicintgetY()示例:TestMouseEvent1.javaMouseMotionList enerMouseMotionListener中的事件处理方法publicvoidmouseMoved(MouseEven te);publicvoidmouseDragged(MouseEvente);MouseEvent中其他常用获取事件 信息方法publicPointgetPoint()publicintgetClickCount()publicbo oleanisMetaDown()示例:TestMouseEvent2.java键盘事件(KeyEvent)在所有组件上 进行键盘操作都会产生键盘事件对应的监听器接口:KeyListenerpublicvoidkeyPressed(KeyEve nte);publicvoidkeyReleased(keyEvente);publicvoidkeyTyped( KeyEvente);示例:TestKeyEvent.java键盘事件(KeyEvent)KeyEvent中获取事件信息 的方法publicchargetKeyChar():获取按键的字符。这个方法只能得到键盘上可见字符,即一些字母、数字和符号 。publicintgetKeyCode():获取按键的键盘码,在键盘上每一个键都有一个特定的整型编码,这些整型编码都以常 量的形式定义在KeyEvent中。比如:Home键的键盘码是KeyEvent.VK_HOME。publicStringgetKeyText(intkeyCode):根据键盘码获取对应的键描述。注意:getKeyCode方法只能在键被按下时获取到键盘编码。 |
|