관리 메뉴

moozi

java 그림판 본문

TIS_2020/응용SW2020_1기

java 그림판

moozi 2020. 4. 8. 11:29

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class PaintPad extends JFrame{

private MyPanel panel=new MyPanel();

public PaintPad() {
this.setTitle("Graphic");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setContentPane(panel);

this.setSize(500, 500);
this.setVisible(true);
}

class MyPanel extends JPanel{

private ArrayList aPoint=new ArrayList();
//중단점인지 표시. 중단점에서 선그리기 중단
private ArrayList aPointFlag=new ArrayList();

Point startP;
Point endP;

public MyPanel() {
addMouseMotionListener(new MouseMotionListener() {

@Override
public void mouseDragged(MouseEvent e) {

aPoint.add(e.getPoint());
aPointFlag.add(false);
repaint();
}

@Override
public void mouseMoved(MouseEvent e) {}
});

addMouseListener(new MouseListener() {
@Override
public void mousePressed(MouseEvent e) {
aPoint.add(e.getPoint());
aPointFlag.add(false);
}
@Override
public void mouseReleased(MouseEvent e) {
aPointFlag.remove(aPointFlag.size()-1);
aPointFlag.add(true);//중단점으로 표시
repaint();//눌렀다 바로 띈 경우를 위해

}
@Override
public void mouseClicked(MouseEvent arg0) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}


});
}

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);

for(int i=0;i<aPoint.size();i++) {
//현재점이 첫번째 점이거나 이전 점이 중단점이면 현재점부터 다시 start
if(i==0 || aPointFlag.get(i-1)==true) {
startP=aPoint.get(i);
}

endP=aPoint.get(i);
g.drawLine((int)startP.getX(), (int)startP.getY(), (int)endP.getX(), (int)endP.getY());
startP=endP;
}
}
}
public static void main(String[] args) {
new PaintPad();
}
}

'TIS_2020 > 응용SW2020_1기' 카테고리의 다른 글

4/13 haksa2  (0) 2020.04.13
04/13 haksa  (0) 2020.04.13
java 그림판  (0) 2020.04.08
haksa  (0) 2020.03.30
Exam03 풀이  (0) 2020.03.25
아두이노 시뮬레이터 자료  (0) 2020.03.16
0 Comments
댓글쓰기 폼