<div>간단한 그림판을 만들기 위한 소스입니다.</div> <div><br></div> <div>많은 조언들을 참고하여 다시 수정해 봤는데요</div> <div><br></div> <div>액션부분에 대한 이해도가 떨어져서 </div> <div><br></div> <div>어떻게 해야 할지 몰르겠습니다.</div> <div><br></div> <div>그래서 일단 오픈소스를 활용하여 그림판을 그리려고 하는데</div> <div><br></div> <div>오류없이 잘 돌아가긴 합니다.</div> <div><br></div> <div>다만 그림이 안 그려질뿐입니다..</div> <div><br></div> <div>혼자서 생각하는게 거기서 거기라 <span style="font-size:9pt;line-height:1.5;">피드백이 불가능 하네요 </span></div> <div><br></div> <div>어디 물어보고 하소연 할 데가 없어 여기에 풉니다 ㅜㅜ</div> <div><br></div> <div>몇 주 전부터 계속 그림판만 물어보던 사람이 저예요 ㅜㅜ</div> <div><br></div> <div>알아보기 편하시라고 조금 이나마 표시 해둡니다.</div> <div><br></div> <div>import java.awt.*;</div> <div>import java.awt.event.*;</div> <div>import java.io.*;</div> <div>import javax.swing.*;</div> <div><br></div> <div>class Paint extends JFrame implements ActionListener, MouseListener,</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>MouseMotionListener {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>private static final long serialVersionUID = 1L;</div> <div><font size="3" color="#938953"><b><br></b></font></div> <div><font size="3" color="#938953"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>JPanel mt = new JPanel();// 도구 패널</b></font></div> <div><font size="3" color="#938953"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>JPanel ct = new JPanel();// 색깔 패널</b></font></div> <div><font size="3" color="#938953"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>String str = "펜";</b></font></div> <div><font size="3" color="#938953"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>JButton pen, circle, square, straight, go, full;// 도구 버튼</b></font></div> <div><font size="3" color="#938953"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>ImageIcon im1, im2, im3, im4, im5, im6, img; // 도구 이미지</b></font></div> <div><font size="3" color="#938953"><b><br></b></font></div> <div><font size="3" color="#938953"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>Container con;// 컨테이너</b></font></div> <div><font size="3" color="#938953"><b><br></b></font></div> <div><font size="3" color="#938953"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>Canvas can = new Canvas();</b></font></div> <div><font size="3" color="#938953"><b><span class="Apple-tab-span" style="line-height:1.5;white-space:pre;"> </span><span style="line-height:1.5;">Color c;</span></b></font></div> <div><font size="3" color="#938953"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>Graphics g; // 그리기를 수행하는 변수</b></font></div> <div><font size="3" color="#938953"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>Point p1, p2, p3;</b></font></div> <div><font size="3" color="#938953"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>int DRAW_MODE = 0;</b></font></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>// 프레임 출력 메소드</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span><b><font color="#ff0000">public Paint(String title) {</font></b></div> <div><b><font color="#ff0000"><span class="Apple-tab-span" style="white-space:pre;"> </span>super("Painting");</font></b></div> <div><span class="Apple-tab-span" style="white-space:pre;"><b><font color="#ff0000"> </font></b></span></div> <div><b><font color="#ff0000"><span class="Apple-tab-span" style="white-space:pre;"> </span>this.init();</font></b></div> <div><span class="Apple-tab-span" style="white-space:pre;"><b><font color="#ff0000"> </font></b></span></div> <div><b><font color="#ff0000"><span class="Apple-tab-span" style="white-space:pre;"> </span>this.start();</font></b></div> <div><b><font color="#ff0000"><span class="Apple-tab-span" style="white-space:pre;"> </span>this.setIconImage(im1.getImage());</font></b></div> <div><b><font color="#ff0000"><span class="Apple-tab-span" style="white-space:pre;"> </span>this.setSize(1000, 1000);</font></b></div> <div><span class="Apple-tab-span" style="white-space:pre;"><b><font color="#ff0000"> </font></b></span></div> <div><b><font color="#ff0000"><span class="Apple-tab-span" style="white-space:pre;"> </span>setVisible(true);</font></b></div> <div><b><font color="#ff0000"><span class="Apple-tab-span" style="white-space:pre;"> </span>}</font></b></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span><b><font color="#c00000">public void init() {// 초기화 메소드</font></b></div> <div><b><font color="#c00000"><span class="Apple-tab-span" style="white-space:pre;"> </span>im1 = new ImageIcon("그림판.png");</font></b></div> <div><b><font color="#c00000"><span class="Apple-tab-span" style="white-space:pre;"> </span>im2 = new ImageIcon("수정됨_연필.png");</font></b></div> <div><b><font color="#c00000"><span class="Apple-tab-span" style="white-space:pre;"> </span>im3 = new ImageIcon("수정됨_CriCle.png");</font></b></div> <div><b><font color="#c00000"><span class="Apple-tab-span" style="white-space:pre;"> </span>im4 = new ImageIcon("수정됨_사각형.png");</font></b></div> <div><b><font color="#c00000"><span class="Apple-tab-span" style="white-space:pre;"> </span>im5 = new ImageIcon("수정됨_직선.png");</font></b></div> <div><b><font color="#c00000"><span class="Apple-tab-span" style="white-space:pre;"> </span>im6 = new ImageIcon("수정됨_채우기.png");</font></b></div> <div><b><font color="#c00000"><br></font></b></div> <div><b><font color="#c00000"><span class="Apple-tab-span" style="white-space:pre;"> </span>con = this.getContentPane();</font></b></div> <div><b><font color="#c00000"><span class="Apple-tab-span" style="white-space:pre;"> </span>con.setBackground(Color.lightGray);</font></b></div> <div><b><font color="#c00000"><span class="Apple-tab-span" style="white-space:pre;"> </span>setLayout(null);</font></b></div> <div><b><font color="#c00000"><span class="Apple-tab-span" style="white-space:pre;"> </span>mt();</font></b></div> <div><b><font color="#c00000"><span class="Apple-tab-span" style="white-space:pre;"> </span>ct();</font></b></div> <div><b><font color="#c00000"><span class="Apple-tab-span" style="white-space:pre;"> </span>canvas();</font></b></div> <div><b><font color="#c00000"><span class="Apple-tab-span" style="white-space:pre;"> </span>}</font></b></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>// 캔버스 추가</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span><b><font color="#002060">public void canvas() {</font></b></div> <div><b><font color="#002060"><span class="Apple-tab-span" style="white-space:pre;"> </span>can.setSize(900, 900);</font></b></div> <div><b><font color="#002060"><span class="Apple-tab-span" style="white-space:pre;"> </span>can.setBackground(Color.WHITE);</font></b></div> <div><b><font color="#002060"><span class="Apple-tab-span" style="white-space:pre;"> </span>can.setLocation(40, 50);</font></b></div> <div><b><font color="#002060"><span class="Apple-tab-span" style="white-space:pre;"> </span>add(can);</font></b></div> <div><b><font color="#002060"><span class="Apple-tab-span" style="white-space:pre;"> </span>}</font></b></div> <div><br></div> <div><span style="line-height:16.3636360168457px;"><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>// make tool 버튼 패널</b></font></span></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>public void mt() { </b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>pen = new JButton("pen", im2);</b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>circle = new JButton(im3);</b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>square = new JButton(im4);</b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>straight = new JButton(im5);</b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>full = new JButton(im6);</b></font></div> <div><font color="#00b0f0"><b><br></b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>Dimension di = pen.getPreferredSize();</b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>// 도구 상자 크기</b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>pen.setSize(di);</b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>circle.setSize(di);</b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>square.setSize(di);</b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>straight.setSize(di);</b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>full.setSize(di);</b></font></div> <div><font color="#00b0f0"><b><br></b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>// 도구 상자 위치</b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>pen.setLocation(275, 10);</b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>circle.setLocation(375, 10);</b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>square.setLocation(475, 10);</b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>straight.setLocation(575, 10);</b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>full.setLocation(675, 10);</b></font></div> <div><font color="#00b0f0"><b><br></b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>// 도구상자 추가</b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>con.add("North", pen);</b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>con.add("North", circle);</b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>con.add("North", square);</b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>con.add("North", straight);</b></font></div> <div><font color="#00b0f0"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>}</b></font></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span><font color="#953734"><b>public void ct() { // Color tool 패널</b></font></div> <div><font color="#953734"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>go = new JButton("Other Color...");</b></font></div> <div><font color="#953734"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>Dimension di2 = go.getPreferredSize();</b></font></div> <div><font color="#953734"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>// 색깔 상자 크기</b></font></div> <div><font color="#953734"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>go.setSize(di2);</b></font></div> <div><font color="#953734"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>// 색깔 상자 위치</b></font></div> <div><font color="#953734"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>go.setLocation(850, 10);</b></font></div> <div><font color="#953734"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>// 색깔 상자</b></font></div> <div><font color="#953734"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>go.addActionListener(new ActionListener() {</b></font></div> <div><font color="#953734"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>public void actionPerformed(ActionEvent e) {</b></font></div> <div><font color="#953734"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>c = JColorChooser.showDialog(</b></font></div> <div><font color="#953734"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>((Component) e.getSource()).getParent(),</b></font></div> <div><font color="#953734"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>"Color Spectrum", c);</b></font></div> <div><font color="#953734"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>if (c == null)</b></font></div> <div><font color="#953734"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>c = Color.black;</b></font></div> <div><font color="#953734"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>}</b></font></div> <div><font color="#953734"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>});</b></font></div> <div><font color="#953734"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>con.add("East", go);</b></font></div> <div><font color="#953734"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>}</b></font></div> <div><b><br></b></div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span><font color="#974806">public void start() { // 시작 액션 메소드</font></b></div> <div><font color="#974806"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</b></font></div> <div><span class="Apple-tab-span" style="white-space:pre;"><font color="#974806"><b> </b></font></span></div> <div><font color="#974806"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>con.addMouseListener(this);</b></font></div> <div><font color="#974806"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>con.addMouseMotionListener(this);</b></font></div> <div><span class="Apple-tab-span" style="white-space:pre;"><font color="#974806"><b> </b></font></span></div> <div><font color="#974806"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>pen.addActionListener(this);</b></font></div> <div><font color="#974806"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>circle.addActionListener(this);</b></font></div> <div><font color="#974806"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>square.addActionListener(this);</b></font></div> <div><font color="#974806"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>straight.addActionListener(this);</b></font></div> <div><font color="#974806"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>full.addActionListener(this);</b></font></div> <div><font color="#974806"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>}</b></font></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span><font color="#244061"><b>public void actionPerformed(ActionEvent e) {</b></font></div> <div><font color="#244061"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>// TODO Auto-generated method stub</b></font></div> <div><font color="#244061"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>String str = e.getActionCommand();</b></font></div> <div><font color="#244061"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>if (str.equals("pen")) {</b></font></div> <div><font color="#244061"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>DRAW_MODE = 1;</b></font></div> <div><font color="#244061"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>} else if (e.getActionCommand().equals(im3)) {</b></font></div> <div><font color="#244061"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>DRAW_MODE = 2;</b></font></div> <div><font color="#244061"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>g.setColor(Color.black);</b></font></div> <div><font color="#244061"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>} else if (e.getActionCommand().equals("im4")) {</b></font></div> <div><font color="#244061"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>DRAW_MODE = 3;</b></font></div> <div><font color="#244061"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>g.setColor(Color.black);</b></font></div> <div><font color="#244061"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>} else if (e.getActionCommand().equals("im5")) {</b></font></div> <div><font color="#244061"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>DRAW_MODE = 4;</b></font></div> <div><font color="#244061"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>g.setColor(Color.black);</b></font></div> <div><font color="#244061"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>}</b></font></div> <div><font color="#244061"><b><br></b></font></div> <div><font color="#244061"><b><span class="Apple-tab-span" style="white-space:pre;"> </span>}</b></font></div> <div><font color="#244061"><b><br></b></font></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span><b>public void DrawLine() {</b></div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span>g = can.getGraphics();</b></div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span>g.drawLine((int) p1.getX(), (int) p1.getY(), (int) p2.getX(),</b></div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span>(int) p2.getY());</b></div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span>}</b></div> <div><b><br></b></div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span>public void DrawRect() {</b></div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span>g = can.getGraphics();</b></div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span>g.draw3DRect((int) p1.getX(), (int) p1.getY(), (int) p2.getX(),</b></div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span>(int) p2.getY(), true);</b></div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span>repaint();</b></div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span>}</b></div> <div><b><br></b></div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span>public void DrawOval() {</b></div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span>g = can.getGraphics();</b></div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span>g.drawOval((int) p1.getX(), (int) p1.getY(), (int) p2.getX(),</b></div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span>(int) p2.getY());</b></div> <div><b><br></b></div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span>}</b></div> <div><b><br></b></div> <div><span style="line-height:16.3636360168457px;"><span class="Apple-tab-span" style="white-space:pre;"> </span>public void mouseDragged(MouseEvent e) {</span><span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">}</span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>public void mouseMoved(MouseEvent e) {<span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">}</span></div> <div><span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">public void mouseClicked(MouseEvent e) {</span><span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">}</span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>public void mouseEntered(MouseEvent e) {<span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">}</span></div> <div><span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">public void mouseExited(MouseEvent e) {<span class="Apple-tab-span" style="white-space:pre;"> </span></span><span style="font-size:9pt;line-height:1.5;">}</span></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>public void mousePressed(MouseEvent e) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>p1 = e.getPoint();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>public void mouseReleased(MouseEvent e) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>p3 = e.getPoint();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>switch (DRAW_MODE) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>case 1:</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>DrawLine();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>break;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>case 2:</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>DrawOval();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>break;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>case 3:</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>DrawRect();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>break;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>public static void main(String[] args) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>Paint painted = new Paint("Painting");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.