1
너비가 100 인 Text 개체를 만들기 위해 Text 개체에 String을 표시하려고합니다. 그리고 문자열이 100보다 넓 으면 문자열의 글꼴/크기를 변경하여 문자열이 객체 내부에 완벽하게 맞도록합니다.텍스트 개체의 JavaFX 크기 조정 문자열
나는 많은 것을 수색했으나 편리한 해결책을 찾지 못했습니다.
너비가 100 인 Text 개체를 만들기 위해 Text 개체에 String을 표시하려고합니다. 그리고 문자열이 100보다 넓 으면 문자열의 글꼴/크기를 변경하여 문자열이 객체 내부에 완벽하게 맞도록합니다.텍스트 개체의 JavaFX 크기 조정 문자열
나는 많은 것을 수색했으나 편리한 해결책을 찾지 못했습니다.
얼마나 많은 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);
}
}
고맙습니다 :) – Totenfluch