2014-06-13 3 views
1

너비가 100 인 Text 개체를 만들기 위해 Text 개체에 String을 표시하려고합니다. 그리고 문자열이 100보다 넓 으면 문자열의 글꼴/크기를 변경하여 문자열이 객체 내부에 완벽하게 맞도록합니다.텍스트 개체의 JavaFX 크기 조정 문자열

나는 많은 것을 수색했으나 편리한 해결책을 찾지 못했습니다.

답변

1

얼마나 많은 Text 객체가 제공된 String을 사용하고 글꼴을 설정하고 있는지 알 수 있습니다. 폭이 100보다 크면, 여기에 설명 된대로 텍스트 폭 미만 100

당신은 폭을 찾을 수 있습니다 때까지 글꼴 크기를 해주 유지 : How to calculate the pixel width of a String in JavaFX?

샘플 코드

package application; 

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.layout.BorderPane; 
import javafx.scene.text.Font; 
import javafx.scene.text.Text; 
import javafx.stage.Stage; 


public class Main extends Application { 

    Text text = new Text("Testing a really, really, long string"); 
    double size = 18; 
    static final int MAX_WIDTH = 100; 

    @Override 
    public void start(Stage stage) { 
     try { 

      BorderPane border = new BorderPane(); 

      Scene scene = new Scene(border); 
      stage.setWidth(200); 
      stage.setHeight(100); 

      Group group = new Group(text); 

      setFontSize(); 

      System.out.println("Final font size: "+size); 

      border.setCenter(group); 

      stage.setScene(scene); 
      stage.show(); 

     } catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    private void setFontSize(){ 

     text.setFont(Font.font ("Arial", size)); 

     // java 7 => 
     // text.snapshot(null, null); 
     // java 8 => 
     text.applyCss(); 

     double width = text.getLayoutBounds().getWidth(); 

     if(width > MAX_WIDTH){ 
      size = size - 0.25; 
      setFontSize(); 
     } 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 
+0

고맙습니다 :) – Totenfluch