2014-03-26 8 views
2

으로 Shape 객체의 폭과 높이를 얻기 I (즉 ... 등, Circle, Rectangle, Polygon, Line 될 수 있습니다) Shape의 서브 클래스를 소요하는 방법이 있고 Shape 개체를 반환합니다.자바 FX

public Shape returnShapeObject() { 
    return circle1; 
} 

문제는 내가 내 원의 형상 객체 표현을 일단, 그것은 더 이상 .getRadius() 방법이 없다는 것입니다. .getWidth() 또는 .getHeight()이 없습니다.

2 차원 JavaFX에서 도형 객체의 반지름/너비/높이를 어떻게 얻을 수 있습니까? 당신은 같은 방법을 Node#getLayoutBounds() 활용할 수

+0

'Shape'은'abstract' 클래스입니다.'Circle'과 같은 확장 클래스에 정의 된 함수를 가지고 있지 않습니다. 특정 메소드를 사용하고자하는 경우'shape' 객체를 형변환해야합니다. 'Circle'의 경우'((Circle) shape) .getRadius();'와'Shape'의 다른 서브 클래스를 사용할 수 있습니다. – AKS

답변

5

는 :

List<Shape> shapes = new ArrayList<>(); 
shapes.add(new Circle(30)); 
shapes.add(new Rectangle(200, 200)); 
shapes.add(new Text("some arbitrary long text for testing")); 
for (Shape shape : shapes) { 
    System.out.println("bounds = " + shape.getLayoutBounds()); 
    System.out.println("width = " + shape.getLayoutBounds().getWidth()); 
    System.out.println("height = " + shape.getLayoutBounds().getHeight()); 
} 

조심스럽게 그 방법의 자바 독을 읽어주의해야합니다.

콘크리트 쉐이프의 메서드와 속성을 원한다면 주석에 언급 된 @AKS로 캐스팅을 중단해야합니다.