如何在Java中制作更大尺寸的画笔

时间:2016-05-20 13:57:01

标签: java swing graphics2d

我已经制作了我的绘画应用程序,一切正常,但如何选择使画笔尺寸更大,或者如果这不可能,默认画笔尺寸更大?这是第一个文件中的代码:

    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));
      }
    }

第二个文件的代码:

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);

        // :)
  }

那么,要写什么来使画笔尺寸更大,或者切换以使尺寸更大或类似的东西。

0 个答案:

没有答案
相关问题