【例9.24】综合鼠标事件和键盘事件处理的程序,模拟一个电子白板,可以用鼠标在上面绘画,可用键盘在上面写字。 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class MouseAndKeyDemo extends JApplet { protected int lastX = 0, lastY = 0; public void init() { setBackground(Color.white); setForeground(Color.blue); addMouseListener(new PositionRecorder()); addMouseMotionListener(new LineDrawer()); addKeyListener(new CharDrawer()); } protected void record(int x, int y) { lastX = x; lastY = y; } private class PositionRecorder extends MouseAdapter{ public void mouseEntered(MouseEvent e) { requestFocus(); record(e.getX(), e.getY()); } public void mousePressed(MouseEvent e) { record(e.getX(), e.getY()); } } private class LineDrawer extends MouseMotionAdapter { public void mouseDragged(MouseEvent e) { int x = e.getX(),y = e.getY(); Graphics g = getGraphics(); g.drawLine(lastX, lastY, x, y); record(x, y); } } private class CharDrawer extends KeyAdapter { public void keyTyped(KeyEvent event) { String s = String.valueOf(event.getKeyChar()); getGraphics().drawString(s, lastX, lastY); record(lastX + 11, lastY); } } } 程序中,在类MouseAndKeyDemo中定义了三个私有嵌套类,两个类对鼠标事件进行处理,一个类对键盘事件进行处理。 程序的运行情况如下图所示。图中的线用鼠标随手画出,文字用键盘输入 【JAVA中的图形用户界面示例】是一个典型的GUI(图形用户界面)编程实例,它使用了Java的`javax.swing`和`java.awt`包中的类来创建一个交互式的电子白板应用。这个应用允许用户通过鼠标绘画线条,以及通过键盘输入文字。 该程序创建了一个名为`MouseAndKeyDemo`的`JApplet`子类,这是Swing库中的一个组件,用于在Web页面中展示图形用户界面。在这个类中,定义了三个私有内部类:`PositionRecorder`、`LineDrawer`和`CharDrawer`,分别对应鼠标事件和键盘事件的处理。 1. `PositionRecorder`类扩展了`MouseAdapter`,它实现了鼠标进入和按下事件的处理。当鼠标进入applet区域,它请求获取焦点,以便接收键盘事件;当鼠标按下时,记录下鼠标的位置。 2. `LineDrawer`类继承自`MouseMotionAdapter`,处理鼠标拖动事件。当鼠标在屏幕上被拖动时,程序会在上次记录的鼠标位置和当前位置之间画一条线,然后更新最后一次记录的位置。 3. `CharDrawer`类是`KeyAdapter`的子类,处理键盘的字符输入事件。每当用户键入一个字符,该字符就会在上次鼠标点击的位置画出来,并将光标位置向右移动11个单位,以便于下一次输入。 这些监听器类通过`addMouseListener`、`addMouseMotionListener`和`addKeyListener`方法注册到`JApplet`实例上,使得它们可以响应相应的事件。 在Java AWT和Swing中,容器(如`JApplet`)可以包含多个组件,并且可以设置布局管理器来决定这些组件在容器内的排列方式。在这个例子中,虽然没有明确提及布局管理器,但默认情况下`JApplet`使用`FlowLayout`,它会按顺序从左到右、从上到下放置组件。 此外,`getGraphics()`方法被用来获取`JApplet`的绘图上下文,通过它可以进行图形绘制,如画线和字符串。然而,这种方法并不推荐,因为`Graphics`对象可能会被重绘时释放,导致绘制的结果不持久。通常,应使用组件的绘制方法(如`paintComponent`)来确保绘制操作在每次重绘时都会执行。 总结一下,这个示例展示了如何使用Java的AWT和Swing库来创建一个具有鼠标和键盘交互功能的GUI应用。它利用了事件监听器和适配器模式,实现了用户输入的捕获和响应,同时演示了基本的图形绘制。在实际开发中,这样的技术可以应用于各种复杂的桌面应用,如绘图软件、游戏或者其他需要用户交互的场景。
剩余63页未读,继续阅读
- SSSummering1142014-03-31资源可用,有一定参考价值,谢谢
- 粉丝: 2
- 资源: 15
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助