2012-05-30 11 views
5

// Java에서 객체를 그리는 방법을 배우려고합니다. 나는 그것에 나아지고있다. 그러나 내가 스크린 위에서 이미지를 얻으면 나는 그것을 조작하는 데 문제가있다. 내가 넣은 숫자는 어떻게 모양이 나오는지 이해하지 못합니다. 적어도 나에게는 그렇지 않다. 대수학에서는 x 축의 숫자를 늘리면 오른쪽으로 가고 y 축의 숫자를 늘리면 올라갑니다. 그게 무슨 일이 일어나고있는 건 아니야. 아무도 내게 어떻게 작동하는지 설명 할 수 있습니까? 나는 여전히 Java에 익숙하지 않으므로 설명과 세부 사항이 많을수록 좋습니다. 나는 자바를 배우기 위해 내 여름에 2 시간을 나가기 위해 노력하고있다. 때로는 조금 실망 스럽다. 어떤 도움이라도 대단히 감사합니다. 여기JFrame의 좌표 평면 사용

+3

자바에서는 (0,0)이 왼쪽 상단 구석에 있습니다. – Jeffrey

+3

이 [link] (http://docs.oracle.com/javase/1.4.2/docs/guide/2d/spec/j2d-intro.html#wp61857) 도움이 될 수 있습니다. – bacchus

+3

이 [예제] (http://stackoverflow.com/a/9373195/230513)에서는 데카르트 좌표와 화면 좌표 간의 변환에 대해 설명합니다. – trashgod

답변

6

화면의 TOP LEFT SIDE, 당신은 X의 가치를 높이는 등 당신이 Y의 값을 증가, 당신은 DOWNWARDS을 이동하지만, 당신은 RIGHT SIDE쪽으로 이동에서 Co-ordinates 시작. 다음은 간단한 예제 프로그램입니다.이 프로그램을 조금 더 잘 이해하고 어디에서나 클릭하기 만하면됩니다.

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

public class DrawingExample 
{ 
    private int x; 
    private int y; 
    private String text; 
    private DrawingBase canvas; 

    private void displayGUI() 
    { 
     JFrame frame = new JFrame("Drawing Example"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     canvas = new DrawingBase(); 
     canvas.addMouseListener(new MouseAdapter() 
     { 
      public void mouseClicked(MouseEvent me) 
      { 
       text = "X : " + me.getX() + " Y : " + me.getY(); 
       x = me.getX(); 
       y = me.getY(); 
       canvas.setValues(text, x, y); 
      } 
     }); 

     frame.setContentPane(canvas); 
     frame.pack(); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String... args) 
    { 
     SwingUtilities.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       new DrawingExample().displayGUI(); 
      } 
     }); 
    } 
} 

class DrawingBase extends JPanel 
{ 
    private String clickedAt = ""; 
    private int x = 0; 
    private int y = 0; 

    public void setValues(String text, int x, int y) 
    { 
     clickedAt = text; 
     this.x = x; 
     this.y = y; 
     repaint(); 
    } 

    public Dimension getPreferredSize() 
    { 
     return (new Dimension(500, 400)); 
    } 

    public void paintComponent(Graphics g) 
    { 
     super.paintComponent(g); 
     g.drawString(clickedAt, x, y); 
    } 
} 
+0

아 멋지다. 이것은 위대합니다. –

+0

@MartinMarino : Thankyou 및 KE SM SMILING :-) –

+0

코드에서 기호 클래스 DrawingBase를 찾을 수 없다는 내용입니다. 오류는 개인 "DrawingBase"캔버스입니다. 캔버스 = 새로운 "DrawingBase"(); 따옴표는 실제 오류의 출처를 보여줍니다. 도움을 주셔서 감사하지만 어떻게 해결해야할지 모르겠습니다. 좀 더 도움을 얻을 수 있을까요? –