2012-11-27 6 views
2

안녕 얘들 아, 내가 마우스로 창을 그릴 수있는 프로그램을 만들려고 노력하고있다. 지금까지 나는 점을 클릭했을 때 나타나는 점을 가지고 있지만 드래그 방법을 추가하여 페이지를 가로 질러 마우스를 끌면 물건을 그립니다. 누군가 내 코드를보고 할 수있는 곳에서 나를 도울 수 있습니까? 여기 마우스로 그리기

내 코드입니다 :

import javax.swing.*; 
import java.awt.event.*; 
public class mouse { 
    private static int x,y; 
    private static draw object = new draw(); 
    public static void main(String[] args){ 
     JFrame frame = new JFrame ("Mouse"); 
     frame.setVisible(true); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(400,400); 
     frame.add(object); 
     object.addMouseListener(new AL()); 
    } 
    static class AL extends MouseAdapter{ 
     public void mousePressed(MouseEvent e){ 
     x = e.getX(); 
     y = e.getY(); 
     object.drawing(x, y); 
     } 
     public void mouseDragged(MouseEvent e) { 
     x= e.getX(); 
     y= e.getY(); 
     object.drawing(x, y); 
     } 
    } 
} 

내가 마우스를 클릭하고 기반으로 그리는 때마다 마우스는 별도의 목록을 각 좌표를 추가하는 것입니다해야

import javax.swing.*; 
import java.awt.*; 

public class draw extends JPanel { 
    private static int x,y; 
    public void drawing (int xx, int yy){ 
     x=xx; 
     y=yy; 
     repaint(); 
    } 

    public void paintComponent (Graphics g){ 
     g.setColor(Color.black); 
     g.fillOval(x, y, 10, 10); 
    } 
} 

답변

0

하나 개의 아이디어 목록의 크기는 마우스를 드래그하여 사용하기 때문에 Path2D.lineTo(x, y)을 사용하고 x 및 y 좌표는 e.getX()e.getY()을 사용할 수 있습니다. 사용 후 Path2D.moveTo(x, y)을 사용하여 각 픽셀에 라인 경로가 추가되도록 마우스를 움직입니다. 이렇게하면 각 운동이 직선처럼 보이지 않게되지만, 어느 방향 으로든 "드로잉"하는 선을 움직일 수 있습니다. 또한, 몇 가지 팁 :

  1. mouseMotionAdapter에서 사용할 때 mouseDragged은 일반적으로 잘 작동 보이드 때문에 내 경험에서 일반적으로 단지 mouseAdapter에 이벤트를 등록하지 않습니다.

  2. 이 프로그램은 드로잉 프로그램이므로 개인적으로 실제로 이것을 더 큰 크기로 확장하려는 경우 미래에 사용할 원의 크기에 대한 변수를 설정합니다 (예 : g.fillOval (x , y, brushSize, brushSize)).