질문이 있습니다. 아크 길이가 바뀌고 그 경계선 안에 호가 있어야하는 어플리케이션을 만들고 있습니다. 그러나 아크의 길이를 변경할 때 중심에 오게되어 채워지는 원처럼 보이지 않습니다. 사실 내가 원하는 것은 호이며 최대 길이 (360)만큼 위치를 계산합니다 (경계선의 중심). 누군가이 문제를 해결해 줄 수 있습니까? 대단히 감사합니다.JavaFX 센터는 테두리 창에 크기를 조정할 수있는 호를 중심으로합니다.
답변
그룹 만들기. 그룹에 전체 원 크기 인 직사각형 (예 : 사각형의 높이와 너비는 원의 지름으로 설정)을 배치 한 다음 원호 반경을 원호 배치 위치로 설정하여 그룹에 호를 추가합니다. 고정 된 크기의 그룹이 크기를 조정할 수있는 영역의 가운데에 있도록 스택 패널에 그룹을 배치합니다. StackPane을 BorderPane의 중앙에 배치합니다. StackPane의 최소 크기를 0으로 설정하여 그룹보다 작은 크기로 그룹을 유지하고 그룹을 가시 범위 내에서 가운데로 유지합니다. BorderPane의 밑바닥에 컨트롤을 추가해 아크의 길이를 동적으로 제어 할 수 있도록 (듯이)합니다.
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.*;
import javafx.scene.control.Slider;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.scene.shape.*;
import javafx.stage.Stage;
public class ArcControl extends Application {
@Override
public void start(Stage stage) throws Exception {
CenteredArc centeredArc = new CenteredArc();
ArcControls arcControls = new ArcControls(centeredArc.getArc());
BorderPane layout = new BorderPane();
layout.setCenter(centeredArc.getArcPane());
layout.setBottom(arcControls.getControlPane());
stage.setScene(new Scene(layout));
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
class CenteredArc {
private static final double INSET = 10;
private static final double ARC_RADIUS = 100;
private static final double INITIAL_ARC_LENGTH = 60;
private static final double ARC_STROKE_WIDTH = 10;
private static final double ARC_REGION_SIZE =
ARC_RADIUS * 2 + ARC_STROKE_WIDTH + INSET * 2;
private final Arc arc;
private final Pane arcPane;
public CenteredArc() {
// Create the arc.
arc = new Arc(
ARC_REGION_SIZE/2, ARC_REGION_SIZE/2,
ARC_RADIUS, ARC_RADIUS,
0,
INITIAL_ARC_LENGTH
);
arc.setStrokeWidth(10);
arc.setStrokeLineCap(StrokeLineCap.ROUND);
arc.setStroke(Color.FORESTGREEN);
arc.setFill(Color.POWDERBLUE);
// Create a background fill on which the arc will be centered.
// The paint of the background fill can be set to Color.TRANSPARENT
// if you don't want the fill to be seen.
final double fillSize = ARC_RADIUS * 2 + arc.getStrokeWidth() + INSET * 2;
Rectangle fill = new Rectangle(fillSize, fillSize, Color.PINK);
// Place the fill and the arc in the group.
// The Group will be a fixed sized matching the fill size.
Group centeredArcGroup = new Group(fill, arc);
// place the arc group in a StackPane so it is centered in a resizable region.
arcPane = new StackPane(centeredArcGroup);
arcPane.setPadding(new Insets(INSET));
arcPane.setMinSize(0, 0);
arcPane.setStyle("-fx-background-color: papayawhip;");
}
public Arc getArc() {
return arc;
}
public Pane getArcPane() {
return arcPane;
}
}
// helper class which can use a slider to control an arc.
class ArcControls {
private static final double INSET = 10;
private final Slider slider;
private final VBox controlPane;
public ArcControls(Arc arc) {
slider = new Slider(0, 360, arc.getLength());
controlPane = new VBox(
slider
);
controlPane.setPadding(
new Insets(INSET)
);
controlPane.setStyle(
"-fx-background-color: palegreen;"
);
arc.lengthProperty().bind(slider.valueProperty());
}
public Slider getSlider() {
return slider;
}
public VBox getControlPane() {
return controlPane;
}
}
BorderPane (또는 StackPane)의 내부는 모양의 경계 상자 (왼쪽 위, 가운데, 아래 등)에 따라 정렬됩니다. 따라서 원호의 중심점이 이동하고 원하는 효과를주지 못합니다.
대신 호를 AnchorPane에 배치하십시오. BorderPane을 사용하려면 AnchorPane을 BorderPane의 영역 (왼쪽, 오른쪽, 가운데 등)에 넣으십시오. 호 길이를 변경하고 원호 길이가 증가하는 원의 효과를 제공하더라도 호의 중심점을 수정합니다.
안녕하세요, 당신의 예제를 시도했지만 작동하지 않습니다. Angle을 0.0으로 설정 한 후 Anchor pane의 왼쪽 상단에 호가 정렬되었거나 totaly가 잘못 배치되었습니다. 호로 도형을 정확하게 쌓아 올리는 방법에 대한 몇 가지 fxml을 보여주십시오. – Zavael
늦게 답장을 드려 죄송합니다. 다음은 장면 빌더로 만든 fxml에 대한 [link] (http://pastebin.com/GxMBhx7j)입니다. 희망이 도움이 될 것입니다. –
고마워요, 고맙겠 습니다만, 그 동안 나는 동적으로 layoutX를 호에 할당해야한다는 것을 이미 알아 냈습니다 - 그것은 일종의 패딩이고 아크가 90도보다 낮 으면 다른 것이되어야합니다 , 아크가 90-180 도인 경우 다른, 그리고 더 클 경우 – Zavael
- 1. 사용자가 크기를 조정할 수있는 javafx 패널이 있습니까?
- 2. javafx 크기를 조정할 수있는 창과 사각형 내부
- 3. 크기를 조정할 수있는 위젯
- 4. 두 div 사이에 크기를 조정할 수있는 테두리 만들기
- 5. JavaFx : SplitPane의 크기를 조정할 수없는 분할 자
- 6. 크기를 조정할 수있는 창을위한 WPF 스크롤 바
- 7. Div가 크기를 조정할 때 크기를 조정할 수있는 div가 올라갑니다.
- 8. jQuery에서 크기를 조정할 수있는 버그
- 9. JPanel에서 크기를 조정할 수있는 JFreeChart
- 10. 포인터로 크기를 조정할 수있는 배열
- 11. 폴리머의 크기를 조정할 수있는 요소
- 12. 크기를 조정할 수있는 gridview 열
- 13. AngularJs 크기를 재조정 할 수있는 테두리 레이아웃
- 14. JavaFX FXML의 새 테두리 창에 매개 변수 전달
- 15. 크기를 조정할 수있는 값을 ios에서 크기를 조정할 수있는 이미지로 설정하는 방법은 무엇입니까?
- 16. tk/tcl로 크기를 조정할 수있는 위젯을 만드는 법
- 17. 고정 된 투명 테두리가있는 크기를 재조정 할 수있는 UIView 크기를 조정할 수있는 마스크
- 18. JavaFX - 사용자가 컨테이너 크기를 조정할 수있게 만드는 방법
- 19. jQuery UI 크기를 조정할 수있는 너비를 조정할 때 높이가 변경됩니다.
- 20. 크기를 조정할 수있는 프레임을 사용하여 응용 프로그램을 만들려면 어떻게해야합니까?
- 21. PrimeFaces에서 크기를 조정할 수있는 갤러리아 정의하기
- 22. 오른쪽에 이미지가있는 크기를 조정할 수있는 검색 창
- 23. 동적으로 크기를 조정할 수있는 IFrame 만들기
- 24. GUI에서 동적으로 크기를 조정할 수있는 테이블
- 25. dojo 그리드에서 행의 크기를 조정할 수있는 방법
- 26. jQuery UI 크기를 조정할 수있는 확장 div
- 27. Qt4에서 크기를 조정할 수있는 사이드 바 만들기
- 28. 사진 크기를 조정할 수있는 방법은 무엇입니까?
- 29. 사용자가 크기를 조정할 수있는 Codemirror 인스턴스
- 30. WPF에서 크기를 조정할 수있는 격자 형 WrapPanel
StackPane을 사용하면 작동하지 않았지만 계속 일정 시간 동안 중앙에 위치하므로 채워지는 원 모양이 아닙니다. –
어떻게 든이 문제를 해결 했습니까? – Zavael