mouseshapetest.java

来自「java learn PPT java learn PPT java learn」· Java 代码 · 共 70 行

JAVA
70
字号
     import java.applet.*;
     import java.awt.*;
     import java.awt.event.*;
     import java.awt.geom.*; 
     import java.util.*;
          
     public class MouseShapeTest extends Applet implements MouseMotionListener
     {  
          // 要绘制的Shape
          private Shape shape;
          
          // 鼠标光标是否在Shape上的标志 
          private boolean mouseOver;

          // 当前绘制和填充的颜色
          private Color currentColor;

          public void init()
          {
               //  Shape 的控制点
               int[] x = { 25, 55, 60, 75, 110, 130 };
               int[] y = { 65, 100, 133, 20, 115, 55 }; 
 
               // 创建一个新的 Polygon 来代表我们的Shape.
               //记住, Polygon*是*Shape,因为它实现了Shape 接口
               shape = new Polygon(x, y, x.length);

               mouseOver = false;
               addMouseMotionListener(this);
          }

          public void paint(Graphics g)
          {
               // 把传入的Graphics容器转换为一个可用的 Graphics2D 对象
               Graphics2D g2d = (Graphics2D)g;

               g2d.setColor(currentColor);

               // 如果鼠标光标在上方则填充 Shape             
               if(mouseOver)
               {
                    g2d.fill(shape); 
               }
               // 否则只是绘制Shape的外形
               else
               {
                    g2d.draw(shape); 
               }
          }

          public void mouseDragged(MouseEvent e) { /* 什么也没做 */ }

          public void mouseMoved(MouseEvent e)
          {
               // 保存先前的值
               boolean prevValue = mouseOver; 

               // 使用Shape.contains方法来更新 mouseOver 标志
               mouseOver = shape.contains(e.getPoint()) ? true : false;

               // 只是在有理由时重绘                 
               if(prevValue != mouseOver)
               {
                    // 在我们可以的时候为什么不改变当前颜色呢
                    currentColor = new Color(new Random().nextInt());
                    repaint();
               }
          }           

     }    // MouseShapeTest

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?