Guest User

Untitled

a guest
Jun 21st, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.12 KB | None | 0 0
  1. import java.awt.Container;
  2. import java.awt.Cursor;
  3. import java.awt.Graphics;
  4. import java.awt.Graphics2D;
  5. import java.awt.Point;
  6. import java.awt.Rectangle;
  7. import java.awt.event.MouseAdapter;
  8. import java.awt.event.MouseEvent;
  9. import java.awt.event.MouseMotionListener;
  10. import java.awt.event.WindowAdapter;
  11. import java.awt.event.WindowEvent;
  12.  
  13. import javax.swing.JFrame;
  14. import javax.swing.JPanel;
  15.  
  16. public class MouseMovement extends JPanel implements MouseMotionListener {
  17.   private static final int SquareWidth = 10;
  18.  
  19.   private static final int Max = 100;
  20.  
  21.   private Rectangle[] squares = new Rectangle[Max];
  22.  
  23.   private int squareCount = 0;
  24.  
  25.   private int currentSquareIndex = -1;
  26.  
  27.   public MouseMovement() {
  28.     addMouseListener(new MouseAdapter() {
  29.       public void mousePressed(MouseEvent evt) {
  30.         int x = evt.getX();
  31.         int y = evt.getY();
  32.         currentSquareIndex = getSquare(x, y);
  33.         if (currentSquareIndex < 0) // not inside a square
  34.           add(x, y);
  35.       }
  36.  
  37.       public void mouseClicked(MouseEvent evt) {
  38.         int x = evt.getX();
  39.         int y = evt.getY();
  40.  
  41.         if (evt.getClickCount() >= 2) {
  42.           remove(currentSquareIndex);
  43.         }
  44.       }
  45.     });
  46.     addMouseMotionListener(this);
  47.   }
  48.  
  49.   public void paintComponent(Graphics g) {
  50.     super.paintComponent(g);
  51.     for (int i = 0; i < squareCount; i++)
  52.       ((Graphics2D)g).draw(squares[i]);
  53.   }
  54.  
  55.   public int getSquare(int x, int y) {
  56.     for (int i = 0; i < squareCount; i++)
  57.       if(squares[i].contains(x,y))
  58.         return i;
  59.     return -1;
  60.   }
  61.  
  62.   public void add(int x, int y) {
  63.     if (squareCount < Max) {
  64.       squares[squareCount] = new Rectangle(x, y,SquareWidth,SquareWidth);
  65.       currentSquareIndex = squareCount;
  66.       squareCount++;
  67.       repaint();
  68.     }
  69.   }
  70.  
  71.   public void remove(int n) {
  72.     if (n < 0 || n >= squareCount)
  73.       return;
  74.     squareCount--;
  75.     squares[n] = squares[squareCount];
  76.     if (currentSquareIndex == n)
  77.       currentSquareIndex = -1;
  78.     repaint();
  79.   }
  80.  
  81.   public void mouseMoved(MouseEvent evt) {
  82.     int x = evt.getX();
  83.     int y = evt.getY();
  84.  
  85.     if (getSquare(x, y) >= 0)
  86.       setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
  87.     else
  88.       setCursor(Cursor.getDefaultCursor());
  89.   }
  90.  
  91.   public void mouseDragged(MouseEvent evt) {
  92.     int x = evt.getX();
  93.     int y = evt.getY();
  94.  
  95.     if (currentSquareIndex >= 0) {
  96.       Graphics g = getGraphics();
  97.       g.setXORMode(getBackground());
  98.       ((Graphics2D)g).draw(squares[currentSquareIndex]);
  99.       squares[currentSquareIndex].x = x;
  100.       squares[currentSquareIndex].y = y;
  101.       ((Graphics2D)g).draw(squares[currentSquareIndex]);
  102.       g.dispose();
  103.     }
  104.   }
  105.  
  106.   public static void main(String[] args) {
  107.     JFrame frame = new JFrame();
  108.     frame.setTitle("MouseTest");
  109.     frame.setSize(300, 200);
  110.     frame.addWindowListener(new WindowAdapter() {
  111.       public void windowClosing(WindowEvent e) {
  112.         System.exit(0);
  113.       }
  114.     });
  115.  
  116.     Container contentPane = frame.getContentPane();
  117.     contentPane.add(new MouseMovement());
  118.  
  119.     frame.show();
  120.   }
  121. }
Add Comment
Please, Sign In to add comment