2012-05-24 7 views
5

내가 자바 FX 작업 일부 CSS 스타일링 고민하고 .. 내가 CSS를 디버깅 할 수있는 방법이 있는지 궁금자바 FX 2 디버그 CSS

?

무엇이 CSS 스타일에 적용되는지 요소를 누를 때 표시되는 크롬의 빌드 비우기 도구 또는 firebug와 동일합니다.

답변

4

Scenic View을 보시고 적어도 귀하의 요구 사항을 충족 시키십니까?

+1

이것은 아주 좋은 도구입니다! didnt는 그것에 대해 안다 - 고마워,하지만 슬프게도 도구는 CSS 속성이 노드에 할당 된 것을 보여주지 않는다. – bennyl

+1

JavaFX는 csp 파일을 가지고있다. 모든 선택기가 정의되어 있으며 이러한 선택기를 덮어 쓰면 대부분의 유스 케이스에서 충분합니다 (더 깊은 변경은 스킨을 통해 수행됩니다). 예를 들어 노드에 스타일을 적용하고 어떤 CSS 속성이 할당되어 있는지 살펴보고 Netbeans의 CSS 작성기/뷰어를 사용하여 적절하게 변경하면 CSS Builder에서 뷰어를 사용하여 CSS를 지원할 것입니다. Scene Builder 자습서를 확인하십시오. –

+0

caspian.css는 훌륭한 소스입니다 - 비록 CSS 디버깅을 위해 방화 광과 같은 것을 가지고 있어도 좋지만 그래도 나는 욕심이 많지 않아야합니다. :) – bennyl

3

Uluk가 제안한대로 ScenicView를 사용하는 것 외에도, 스테이지를 표시 한 후 콘솔에 활성 노드를 덤프하는 경우도 있습니다. 노드의 기본값 인 toString()은 CSS ID와 스타일 클래스를 나열합니다.

// debugging routine to dump the scene graph. 
public static void dump(Node n) { dump(n, 0); } 
private static void dump(Node n, int depth) { 
    for (int i = 0; i < depth; i++) System.out.print(" "); 
    System.out.println(n); 
    if (n instanceof Parent) 
    for (Node c : ((Parent) n).getChildrenUnmodifiable()) 
     dump(c, depth + 1); 
} 

샘플 출력 :

[email protected] 
    [email protected][styleClass=lyric-text] 
    Button[id=null, styleClass=button change-lyric] 
    ButtonSkin[id=null, styleClass=button change-lyric] 
     [email protected] 
     [email protected][styleClass=text] 

CSS를 처리 주위 문서화되지 않은 내부 API가 있습니다 만, 공공 아무것도.

이 API 공개를 요청한 사람 : CSS Style Object Model in Java. StyleMap이라는 것을 만들고이를 노드에 부착합니다.이 노드는 이후 StyleMap을 추가 한 후 노드가 발생하는 CSS 변경 사항을 기록합니다. .

public void addStyleMaps(Node node, int depth) { 
    node.impl_setStyleMap(FXCollections.observableMap(new HashMap<WritableValue, List<Style>>())); 
    if (node instanceof Parent) { 
    for (Node child : ((Parent) node).getChildrenUnmodifiable()) { 
     addStyleMaps(child, depth + 1); 
    } 
    } 
} 

당신이 stylemaps가 노드에 추가 된 이후 =>

System.out.println(n + " " + node.impl_getStyleMap()); 

다음 루틴도 스타일 변화를 인쇄 할 수 위의 덤프 루틴을 수정합니다.

위의 호출은 향후 JavaFX 릴리스에서 변경 될 수 있고 더 이상 사용되지 않으며 공개 API의 사용 및 테스트 지원을받지 못한 impl_pi를 사용합니다.

이 기능은 ScenicView와 같은 그래픽 도구로 구현되어야 Firebug 스타일 CSS 정보를 대화식으로 제공 할 때까지 유용하지 않을 것입니다. 나는 ScenicView가 오픈 소스라고 생각하지 않으며 내부 CSS 구현은 공개적으로 문서화되어 있지 않으므로 그러한 도구를 직접 만드는 것은 어려울 수 있습니다.

+0

나는 그 일을하지만, 각 노드에 어떤 css 속성이 할당되었는지에 대한 정보를 보여주지 않으며 그 속성/파일렉터에서 그 속성을 가져왔다. – bennyl

+0

deprecated 구현 API를 사용하여 더 자세한 CSS 정보를 얻는 방법에 대한 답변이 업데이트되었습니다. – jewelsea