Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.awt.geom.*;
- import java.awt.geom.Ellipse2D;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.*;
- public class MoveCircle {
- public static void main(String[] args) {
- System.out.println("Перемещение круга");
- MyFrame frame = new MyFrame();
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.show();
- }
- }
- class MyFrame extends JFrame
- {
- public MyFrame(){
- setTitle("Поле");
- setSize(500,500);
- setVisible(true);
- MyPanel panel = new MyPanel();
- Container pane = getContentPane();
- pane.add(panel);
- }
- }
- class MyPanel extends JPanel {
- private ArrayList circle;
- private Ellipse2D current;
- public MyPanel(){
- circle = new ArrayList();
- current = null;
- addMouseListener (new MyMouse());
- addMouseMotionListener(new myMove());
- }
- public void paintCompnent(Graphics g){
- super.paintComponent(g);
- Graphics2D g2 = (Graphics2D) g;
- g2.setBackground(Color.white);
- for (int i=0;i<circle.size();i++)
- {
- g2.setColor(new Color ((i*200+20)%255,(i*80+10)%255,(i*100+50)%255));
- g2.fill((Ellipse2D)circle.get(i));
- }
- }
- public void add(Point p){
- current = new Ellipse2D.Double(p.getX()-10,p.getY()-10,20,20);
- circle.add(current);
- repaint();
- }
- public Ellipse2D find(Point2D p){
- for(int i=0;i<circle.size();i++)
- {
- Ellipse2D e=(Ellipse2D) circle.get(i);
- if(e.contains(p)) return e;
- }
- return null;
- }
- public void remove(Ellipse2D e){
- if(e==null) return;
- if(e==current) current=null;
- circle.remove(e);
- repaint();
- }
- private class MyMouse extends MouseAdapter{
- public void mousePressed(MouseEvent event){
- current = find(event.getPoint());
- if (current == null)
- add(event.getPoint());
- }
- public void mouseClicled(MouseEvent event){
- if (event.getClickCount()>=2){
- current = find(event.getPoint());
- if (current != null)
- remove (current);
- }
- }
- }
- private class myMove implements MouseMotionListener{
- public void mouseMoved(MouseEvent event){
- if(find(event.getPoint())==null)
- setCursor(Cursor.getDefaultCursor());
- else
- setCursor(Cursor.getPredefinedCursor
- (Cursor.CROSSHAIR_CURSOR));
- }
- public void mouseDragged(MouseEvent event){
- if(current!=null){
- current.setFrame(event.getX()-10,event.getY()-10,20,20);
- repaint();
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment