Advertisement
Guest User

Untitled

a guest
Jun 18th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.26 KB | None | 0 0
  1. import java.awt.*;
  2. import java.awt.geom.*;
  3. import javax.swing.*;
  4. import java.util.*;
  5. import java.awt.event.*;
  6.  
  7.  
  8. public class DrawCircle
  9. {
  10.     public static int size = 500;
  11.     public static Color color = Color.RED;
  12.  
  13.     public static void main(String[] args)
  14.     {
  15.         DrawFrame frame = new DrawFrame(size, color);
  16.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  17.         frame.setVisible(true);
  18.     }
  19. }
  20.  
  21. class DrawFrame extends JFrame
  22. {
  23.     public DrawFrame(int size, Color color)
  24.     {
  25.         setTitle("Drawing Circle");
  26.         setSize(size, size + 31);
  27.  
  28.         DrawPanel panel = new DrawPanel(size, color);
  29.         add(panel);
  30.     }
  31. }
  32.  
  33. class DrawPanel extends JPanel
  34. {
  35.     Color color;
  36.  
  37.     double centerX;
  38.     double centerY;
  39.     double radius;
  40.  
  41.     int brush_counter = 0;
  42.  
  43.     private ArrayList<Ellipse2D> circles;
  44.  
  45.     public DrawPanel(int size, Color color)
  46.     {
  47.         this.color = color;
  48.         centerX = centerY = radius = size / 2;
  49.         circles = new ArrayList<Ellipse2D>();
  50.  
  51.         JButton brushAreaRed = new JButton("Red");
  52.         add(brushAreaRed);
  53.  
  54.         JButton brushAreaBlue = new JButton("Blue");
  55.         add(brushAreaBlue);
  56.  
  57.         JButton brushAreaGreen = new JButton("Green");
  58.         add(brushAreaGreen);
  59.  
  60.         ColorAction brushAreaActionRed = new ColorAction(Color.RED);
  61.         ColorAction brushAreaActionBlue = new ColorAction(Color.BLUE);
  62.         ColorAction brushAreaActionGreen = new ColorAction(Color.GREEN);
  63.  
  64.         brushAreaRed.addActionListener(brushAreaActionRed);
  65.         brushAreaBlue.addActionListener(brushAreaActionBlue);
  66.         brushAreaGreen.addActionListener(brushAreaActionGreen);
  67.     }
  68.  
  69.     public void brushAndRepaint(Color color)
  70.     {
  71.         this.color = color;
  72.  
  73.         if (brush_counter == 0)
  74.         {
  75.             Ellipse2D circle = new Ellipse2D.Double();
  76.             circle.setFrameFromCenter(centerX, centerY, centerX + radius, centerY + radius);
  77.             circles.add(circle);
  78.             brush_counter++;
  79.  
  80.         } else if (brush_counter == 1)
  81.         {
  82.             for (double i = radius; i > 0; i = i - 0.1)
  83.             {
  84.                 Ellipse2D circle = new Ellipse2D.Double();
  85.                 circle.setFrameFromCenter(centerX, centerY, centerX + i, centerY + i);
  86.                 circles.add(circle);
  87.             }
  88.             brush_counter++;
  89.         } else
  90.         {
  91.             Ellipse2D initial = circles.get(0);
  92.             circles = new ArrayList<Ellipse2D>();
  93.             circles.add(initial);
  94.             brush_counter = 0;
  95.         }
  96.         repaint();
  97.     }
  98.  
  99.     public void paintComponent(Graphics g)
  100.     {
  101.         super.paintComponent(g);
  102.         Graphics2D g2 = (Graphics2D) g;
  103.  
  104.         Stroke stroke = new BasicStroke(1f);
  105.         g2.setStroke(stroke);
  106.  
  107.         for (Ellipse2D circle : circles)
  108.         {
  109.             g2.setColor(this.color);
  110.             g2.draw(circle);
  111.         }
  112.  
  113.     }
  114.  
  115.     private class ColorAction implements ActionListener
  116.     {
  117.         private Color color;
  118.  
  119.         public ColorAction(Color color)
  120.         {
  121.             this.color = color;
  122.         }
  123.  
  124.         public void actionPerformed(ActionEvent event)
  125.         {
  126.             brushAndRepaint(this.color);
  127.         }
  128.     }
  129.  
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement