2013-11-25 1 views

답변

2

자바 클래스 GraphicsGraphics2D에는 Zelle의 그래픽이 포함되어있는 대부분이 포함되어야합니다.

다음은 시작하기위한 몇 가지 Java Swing 코드입니다. 이 Java 응용 프로그램은 마우스 왼쪽 버튼을 누르고있는 동안 마우스로 그립니다. 마우스 왼쪽 버튼을 놓으면 화면이 지워지고 다른 것을 그릴 수 있습니다.

import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Point; 
import java.awt.event.MouseEvent; 
import java.io.File; 
import java.util.ArrayList; 
import java.util.List; 

import javax.swing.JFileChooser; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.SwingUtilities; 
import javax.swing.event.MouseInputAdapter; 

public class DrawingTest implements Runnable { 

    private JFrame frame; 

    private MyDrawPanel drawPanel; 

    private List<Point> points; 

    public DrawingTest() { 
     points = new ArrayList<Point>(); 
    } 

    @Override 
    public void run() { 
     frame = new JFrame("Bouncing Vertices"); 

     drawPanel = new MyDrawPanel(this); 
     MyListener alpha = new MyListener(this); 
     drawPanel.addMouseMotionListener(alpha); 
     drawPanel.addMouseListener(alpha); 

     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.getContentPane().add(drawPanel); 
     frame.setSize(800, 600); 
     frame.setVisible(true); 
    } 

    public JPanel getDrawingPanel() { 
     return drawPanel; 
    } 

    public List<Point> getPoints() { 
     return points; 
    } 

    public void setPoint(int x, int y) { 
     points.add(new Point(x, y)); 
    } 

    public void resetPoints() { 
     points.clear(); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new DrawingTest()); 
    } 

    private class MyListener extends MouseInputAdapter { 

     private DrawingTest drawingTest; 

     public MyListener(DrawingTest drawingTest) { 
      this.drawingTest = drawingTest; 
     } 

     @Override 
     public void mouseDragged(MouseEvent event) { 
      drawingTest.setPoint(event.getX(), event.getY()); 
      drawingTest.getDrawingPanel().repaint(); 
     } 

     @Override 
     public void mouseReleased(MouseEvent event) { 
      drawingTest.resetPoints(); 
     } 

    } 

    private class MyDrawPanel extends JPanel { 

     private static final long serialVersionUID = 1L; 
     private DrawingTest drawingTest; 

     public MyDrawPanel(DrawingTest drawingTest) { 
      this.drawingTest = drawingTest; 
     } 

     @Override 
     public void paintComponent(Graphics g) { 
      g.setColor(Color.WHITE); 
      g.fillRect(0, 0, this.getWidth(), this.getHeight()); 
      g.setColor(Color.BLUE); 
      for (int i = 1; i < drawingTest.getPoints().size(); i++) { 
       Point p1 = drawingTest.getPoints().get(i - 1); 
       Point p2 = drawingTest.getPoints().get(i); 
       g.drawLine(p1.x, p1.y, p2.x, p2.y); 
      } 
     } 
    } 

} 

코드의 마지막 메서드 인 paintComponent 메서드는 Graphics 메서드를 사용하는 곳입니다.

관련 문제