2013-04-30 4 views
1

Centering Text on a Button with Offset에 대한 솔루션을 찾으려고 시도한 후 이제 사용자 지정 구성 요소를 만들고 있습니다. 목표는 한쪽면에 아이콘이 있고 나머지 버튼을 채우는 가운데 맞춤 텍스트가있는 버튼 모양의 구성 요소를 만드는 것입니다.모든 자식에 대한 상태를 부모와 동일하게 설정

구성 요소에는 아이콘과 텍스트를 표시하는 두 개의 레이블/버튼이 있습니다. 둘 다 CSS의 배경 이미지를 가지고 있습니다.

는 CSS는 아이콘이 텍스트

#button-icon-cancel{ 
    -fx-font-family: "Arial"; 
    -fx-padding: 0,0,0,0; 
    -fx-background-color: transparent; 
    -fx-font-size: 28px; 
    -fx-graphic: url('images/button/cancel.png'); 
} 

#button-icon-cancel:pressed{ 
    -fx-graphic: url('images/button/cancel-pressed.png'); 
} 

이미지가 setId에 의해로드()에 대한 배경으로 교환 이미지와 텍스트처럼 보인다. 현재 두 구성 요소는 스테이지로 전달되기 전에 패널에 추가됩니다. 처리를 위해 OnClickEvent가 포함되어 있습니다.

이제

가 어떻게 하나의 구성 요소가 클릭하면, 다른 하나는 점점 것을 달성 할 수있는 실제 질문 :뿐만 아니라 CSS에서 누르면? 패널에 ClickEvent 추가

  • 내가 클릭 수, (에 대한 두 레이블/버튼을 클릭)
  • 하는 HBox의에 모두 추가 그런 측면에서 HBox의 작업에 이벤트를 추가 아무것도하지 않고있다 구성 요소와 이벤트 중 하나가 실행되고 있지만 눌린 상태는 클릭 한 구성 요소에만 적용됩니다.

모든 하위 항목에 알림을 제공 할 수 있으며, 해당 항목을 누른 것처럼 작동해야합니까? 우리에게는 작은 아이콘이 많이 있지만 텍스트 배경은 하나뿐이므로 레이블을 전체 위에두면 많은 불필요한 이미지 공간이 낭비됩니다. 또한 모든 css가 한 번에 변경되지 않는 경우 글꼴 색상을 변경하는 데 문제가 발생할 수 있습니다 (.setMouseTransparent(true) 인 라벨 오버 버튼 솔루션은 라벨이 알림 버튼을 누르지 않았기 때문에 텍스트 라벨의 글꼴 색상을 변경하지 않음).)

답변

0

우선 JFX-8은 더 많은 CSS 개선 기능을 지원하므로 문제를 쉽게 해결할 수 있습니다.

문제를 해결하려면 다음을 제안 할 수 있습니다. 각 노드에는 누른 속성이 있습니다. 이 속성에 리스너를 추가 할 수 있으며 true로 변경되면 필요한 노드에서 setStyle (String) 메서드를 사용하고 false로 변경하면 setStyle (null | "")을 사용합니다.

관련 문제