2015-01-05 13 views
-1

난 I는 Jpanel2 정의하고이를 다각형을 그리 다음 GUI를 만들 넷빈즈에게 IDE를 사용하는 코드를 인JPanel 문제에 대한 JavaSwing 조정?

INT [] polygonXs = {151, 153, 158, 159, 154};
int [] polygonYs = {6, 1, 3, 8, 10};
도형 모양 = 새 다각형 (polygonXs, polygonYs, polygonXs.length);

그런 다음 문제는 점 (151,1) (153,1) (158,3) (159,8) (154,10)이 JFrame 좌표에 있다는 것입니다.
추가로 (0,0)은 JFrame의 왼쪽 상단에 있지만, (0,0)은 Jpanel2 (검정색 배경)의 왼쪽 상단에 있어야합니다. 어떻게 (이미지 아래의 Jpanel2 코드) 그것을 고칠 수 있습니다.

This is jPanel2 class

import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Polygon; 
import java.awt.Shape; 
import java.awt.geom.AffineTransform; 
import javax.swing.JPanel; 

public class J2d1 extends JPanel{ 
public static final String TITLE = "Affine Transform Demo"; 

int[] polygonXs = { 151, 153, 158, 159, 154}; 
int[] polygonYs = { 6, 1, 3, 8, 10}; 
Shape shape = new Polygon(polygonXs, polygonYs, polygonXs.length); 
double x = 50.0, y = 50.0; 

public void paintComponent(Graphics g){ 
    super.paintComponent(g); 
    setBackground(Color.BLACK); 
    Graphics2D g2d = (Graphics2D)g; 

    AffineTransform saveTransform = g2d.getTransform(); 
    AffineTransform identity = new AffineTransform(); 
    g2d.setTransform(identity); 

    g2d.setColor(Color.green); 
    g2d.fill(shape); 
    g2d.translate(x, y); 
    g2d.scale(2.2, 2.2); 
    g2d.fill(shape); 

    for(int i = 0; i < 5; ++i){ 
     g2d.translate(50.0, 5.0); 
     g2d.setColor(Color.blue); 
     g2d.fill(shape); 
     g2d.rotate(Math.toRadians(15.0)); 
     g2d.setColor(Color.RED); 
     g2d.fill(shape);    
    } 
    g2d.setTransform(saveTransform); 

    } 
} 
+0

1) 더 나은 도움을 받으려면 [MCVE] (http://stackoverflow.com/help/mcve) (최소한의 완전한 검증 가능한 예) 또는 [SSCCE] (http://www.sscce.org/) (짧은, 자체 포함, 올바른 예). 2) 'AffineTransform'인스턴스의 조합을 사용하여 좌표계를 변경하십시오. –

+0

BTW - 이미 AffineTransform 인스턴스를 실험 해본 것처럼 보입니다. 그러나 위의 코드는 그렇지 않은 경우와 똑같은 효과를냅니다. –

+0

사이드 노트 (@AndrewThompson도 가능) : 하나는 ** 절대로 ** id2 변환 .setTransform (...)을 수동으로 생성 된 affine 변환으로 호출하십시오. 자세한 내용은이 메소드의 JavaDoc을 참조하십시오. http://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html#setTransform-java.awt.geom.AffineTransform- – Marco13

답변

1

사용 SwingUtilities의 클래스입니다. 방법이 있습니다

좌표를 전달하고 한 구성 요소의 좌표를 다른 구성 요소의 좌표로 변환 할 수있는 방법이 있습니다.

+0

위의 코드로 이해할 수없는 예제가 있습니까? JFrame의 좌표를 JPanel2의 좌표로 변경하고 싶습니다. –