2017-10-09 6 views
1

com.sun 패키지의 Class이므로 FontLoader.computeStringWidth의 대안을 찾고 있는데 사용해서는 안됩니다.FontLoader 대신 사용할 수있는 computeStringWidth

텍스트 글꼴 크기 (CSS에서 올 수 있음)를 고려하기 위해 텍스트 기반의 prefWidth를 동적으로 설정하는 데 사용됩니다. 여러 GridPane을 가짐으로써 첫 번째 열을 모든 그리드와 정렬 시키길 원합니다. 이에서 예를

를 들어

:

을 | Column1 텍스트 | Column2 |

| Column1 텍스트 추가 | Column2 |

| 칼럼 1 텍스트 더보기 | Column2 |

여기에 (점선은 무시하십시오) :

| 열 1 텍스트 ................. | Column2 |

| Column1TextMore ......... | Column2 |

| 칼럼 1 텍스트 더보기 | Column2 |

임시 장면을 만들고 여기에 텍스트를 추가 한 다음 applyCss를 호출하고 마지막으로 너비를 얻는 것이 허용 된 대답을 찾았습니다. 그러나 나는이 대안을 좋아하지 않았다. 더 나은 방법이어야합니다. 내 경우 https://stackoverflow.com/a/13020490/1835477

는 여러 개의 그리드를 가지고 있고, 각각의 장면/텍스트를 생성하는 것은 가난한 솔루션 (현명 성능) 특히 우아하지처럼 보인다.

+0

무관 : FX9에서, 방법은 당신의 목표는 적절한 사이즈를 설정하는 경우 ... – kleopatra

+0

는 사용하지 않는 것이 다른 곳으로 이동 ['USE_COMPUTED_SIZE'] (HTTPS : //docs.oracle.com/javase/8/javafx/api/javafx/scene/layout/Region.html#USE_COMPUTED_SIZE)도 올바르게 작동합니까? – Itai

답변

1

더 나은 해결책은 this answer에 설명 된 해결책보다 우수합니다.

  1. 측정 할 문자열을 텍스트 개체에 배치하십시오.
  2. 흩어져있는 장면을 만들고 장면에 Text 개체를 배치합니다.
  3. 텍스트 개체에 applyCss를 호출하십시오.
  4. Text 개체의 레이아웃 범위의 너비를 가져옵니다.

샘플 :

final Text text = new Text("XYZ"); 
new Scene(new Group(text)); 
text.applyCss(); 
final double width = text.getLayoutBounds().getWidth();