2013-12-18 1 views
3

JavaFX 2 응용 프로그램이 있습니다. 모든 버튼은 기본 스타일 (회색 그라디언트)을 사용합니다. 응용 프로그램의 일부 특수 영역에서는 배경색이 빨간색, 노란색 또는 녹색입니다. 이 영역에는 버튼이 있습니다.JavaFX 2의 버튼에 "색조"를 적용 할 수 있습니까?

세 가지 색상으로 버튼의 모든 다른 상태 (일반, 마우스 오버, 누름)를 다시 스타일링하는 대신 버튼 배경에 배경색을 지정하고 싶습니다. 이것이 가능한가, 그리고 어떻게?

그렇지 않은 경우 기본 단추 스타일을 쉽게 다시 스타일링하고 마우스를 놓고 누른 상태 (의사 선택자)가이 스타일에서 자동으로 파생되는 방법이 있습니까?

그럴 수 없다면 제안을받을 수 있습니다. 가장 중요한 목표는 다른 색상 패널을 나중에 추가하려는 경우 중복되거나 중복되는 선언 (특히 그라디언트)을 피하는 것입니다. 배경색 중 하나의 그늘. 빨간색 패널/버튼

CSS :

내 가장 좋은 방법은 지금까지과 같이, 반투명 그라데이션을 사용하는 것입니다
#my-red-panel { 
    -fx-border-width: 1; 
    -fx-border-radius: 5; 
    -fx-background-radius: 5; 
    -fx-smooth: true; 
    -fx-border-color: rgb(209, 65, 42); 
    -fx-background-color: rgba(255, 78, 50, 0.89); 
} 

#my-red-panel .button { 
    -fx-background: rgba(0, 0, 0, 0); /* Now borders look good, but button is still grey*/ 
} 

:

#my-red-panel .button { 
    -fx-background-color: linear-gradient(rgba(255, 255, 255, 0.3), rgba(0, 0, 0, 0.2)); 
} 

을 나는 아직도 각을 선언해야 상태는 변경할 수 있지만 최소한 각 상태를 수정하지 않고 기본 색상을 변경할 수 있습니다. 가장 큰 문제는이 버튼의 전체 모양을 무시한다는 것입니다, 그래서 ... 더 나은 뭔가를 기대했다 : -/

+0

버튼을 흰색으로 만들고 알파 백분율로 재생할 수 없습니까? 그것을 테스트하지 않았지만 아마도 원하는 결과를 제공합니다. 'rgba (255,255,255, .80)' – Perneel

+0

과 같은 것 감사합니다, @ Perneel! 나는 이미 그것을 생각했다. (질문을 업데이트했다.) 그리고 작품의 종류는 내가 바라던 것보다 덜 우아하지만. – haraldK

답변

5

테스트하지,하지만 실험 해 : 아마도

#my-red-panel { 
    -fx-base: rgba(255, 78, 50, 0.89); 
} 

나 :

#my-red-panel .button { 
    -fx-base: ... ; 
} 

정확한 효과에 따라 다릅니다.

여기에있는 속임수는 기본 CSS (JavaFX2.2 용 caspian.css 또는 JavaFX8 용 modena.css)에서 미리 정의 된 조회 색상을 사용한다는 것입니다. 이들이 어떻게 사용되는지보기 위해 소스를 파헤 칠 수 있습니다. 장면 그래프의 노드에 대해 이러한 조회를 재정의하면 새 정의가 모든 하위 노드에 전파됩니다.

+0

패널에'-fx-base'와'-fx-background'를 조합하여 사용했습니다! 이제 정확히 그것을 원했던 것처럼 보였고 중복 된 CSS는 없었습니다. 감사합니다! :-) – haraldK

+0

yw. 여기에있는 트릭은 기본 CSS (JavaFX2.2 용 caspian.css 또는 JavaFX8 용 modena.css)에서 미리 정의 된 조회 색상을 사용한다는 것입니다. 이들이 어떻게 사용되는지보기 위해 소스를 파헤 칠 수 있습니다. 장면 그래프의 노드에 대해 이러한 조회를 재정의하면 새 정의가 모든 하위 노드에 전파됩니다. –

+0

차가움. 추가 설명 주셔서 감사합니다! 나중에 참조 할 수 있도록 대답에 추가 할 수 있습니다. :-) – haraldK

관련 문제