0

I have made my painting app, everything works, but how to make a option to make the brush size bigger, or if this isn't possible, the default brush size bigger? Here is the code from the first file:

    package MaddpawNightpainter;

    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.RenderingHints;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionAdapter;

    import javax.swing.JComponent

    public class Nightpainter extends JComponent {

      // Image in which we're going to draw
      private Image image;
      // Graphics2D object ==> used to draw on
      private Graphics2D g2;
      // Mouse coordinates
      private int currentX, currentY, oldX, oldY;

      public Nightpainter() {
        setDoubleBuffered(false);
        addMouseListener(new MouseAdapter() {
          public void mousePressed(MouseEvent e) {
            // save coord x,y when mouse is pressed
            oldX = e.getX();
            oldY = e.getY();
          }
        });

        addMouseMotionListener(new MouseMotionAdapter() {
          public void mouseDragged(MouseEvent e) {
            // coord x,y when drag mouse
            currentX = e.getX();
            currentY = e.getY();

            if (g2 != null) {
              // draw line if g2 context not null
              g2.drawLine(oldX, oldY, currentX, currentY);
              // refresh draw area to repaint
              repaint();
              // store current coords x,y as olds x,y
              oldX = currentX;
              oldY = currentY;
            }
          }
        });
      }

      protected void paintComponent(Graphics g) {
        if (image == null) {
          // image to draw null ==> we create
          image = createImage(getSize().width, getSize().height);
          g2 = (Graphics2D) image.getGraphics();
          // enable antialiasing
          g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
          // clear draw area
          clear();
        }

        g.drawImage(image, 0, 0, null);
      }

      // now we create exposed methods
      public void clear() {
        g2.setPaint(Color.white);
        // draw white on entire draw area to clear
        g2.fillRect(0, 0, getSize().width, getSize().height);
        g2.setPaint(Color.black);
        repaint();
      }

      public void red() {
        // apply red color on g2 context
        g2.setPaint(Color.red);
      }

      public void black() {
        g2.setPaint(Color.black);
      }

      public void magenta() {
        g2.setPaint(Color.magenta);
      }

      public void green() {
        g2.setPaint(Color.green);
      }

      public void blue() {
        g2.setPaint(Color.blue);
      }
      public void yellow() {
        g2.setPaint(Color.yellow);
      }
      public void orange() {
        g2.setPaint(new Color(255,127,39));
      }
    }

And the 2nd file's code:

package MaddpawNightpainter;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Nightpainter2 {

  static JButton clearBtn, blackBtn, blueBtn, greenBtn, redBtn, magentaBtn, yellowBtn, orangeBtn;
  static Nightpainter drawArea;
  static ActionListener actionListener = new ActionListener() {

  public void actionPerformed(ActionEvent e) {
      if (e.getSource() == clearBtn) {
        drawArea.clear();
      } else if (e.getSource() == blackBtn) {
        drawArea.black();
      } else if (e.getSource() == blueBtn) {
        drawArea.blue();
      } else if (e.getSource() == greenBtn) {
        drawArea.green();
      } else if (e.getSource() == redBtn) {
        drawArea.red();
      } else if (e.getSource() == magentaBtn) {
        drawArea.magenta();
      } else if (e.getSource() == yellowBtn) {
        drawArea.yellow();
      } else if (e.getSource() == orangeBtn) {
        drawArea.orange();
      }

    }
  };

  public static void main(String[] args) {
    // create main frame
        JFrame frame = new JFrame("Nightpainter 1.0");
        // set layout on content pane
        frame.setLayout(new BorderLayout());
        // create draw area
        drawArea = new Nightpainter();

        // add to content pane
        frame.add(drawArea, BorderLayout.CENTER);

        // create controls to apply colors and call clear feature
        JPanel controls = new JPanel();

        clearBtn = new JButton("Clear");
        clearBtn.addActionListener(actionListener);
        blackBtn = new JButton("Black");
        blackBtn.addActionListener(actionListener);
        blueBtn = new JButton("Blue");
        blueBtn.addActionListener(actionListener);
        greenBtn = new JButton("Green");
        greenBtn.addActionListener(actionListener);
        redBtn = new JButton("Red");
        redBtn.addActionListener(actionListener);
        magentaBtn = new JButton("Magenta");
        magentaBtn.addActionListener(actionListener);
        yellowBtn = new JButton("Yellow");
        yellowBtn.addActionListener(actionListener);
        orangeBtn = new JButton("Orange");
        orangeBtn.addActionListener(actionListener);
        // add to panel
        controls.add(greenBtn);
        controls.add(blueBtn);
        controls.add(blackBtn);
        controls.add(redBtn);
        controls.add(magentaBtn);
        controls.add(yellowBtn);
        controls.add(orangeBtn);
        controls.add(clearBtn);

        // add to content pane
        frame.add(controls, BorderLayout.NORTH);

        frame.setSize(850, 850);
        // can close frame
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // show the swing paint result
        frame.setVisible(true);

        // :)
  }

So, what to write to make the brush size bigger or a switch to make the size bigger or something like that.

MrColdfish
  • 123
  • 1
  • 1
  • 5
  • No, it's not. Just I made a drawing tool in Java, and I need something like in MS Paint. – MrColdfish May 20 '16 at 14:16
  • 1
    Invoking `g2.setStroke()` is exactly right, but you should't be saving the graphics context as a class attribute like this. – trashgod May 20 '16 at 14:59
  • @MrColdfish, `No, it's not.` - how is it not what you want? The BasicStroke class looks like the proper answer to me. Are you maybe referring to the "cursor" used in Paint as oppose to the "line size" that is drawn when you drag the cursor? – camickr May 20 '16 at 16:31
  • 1
    @MrColdfish: Also consider `TexturePaint`, for [example](http://stackoverflow.com/q/794780/230513). – trashgod May 20 '16 at 18:36
  • 1
    @camickr: I suspect that MrColdfish is also looking for brushstroke effects typically achieved using `TexturePaint`, `BufferedImageOp` or other bitmap manipulation; please don't hesitate to re-open if you see fit. – trashgod May 20 '16 at 18:42

0 Answers0