String 文本对象中的JavaFX调整字符串大小
我正在尝试制作一个宽度为100的文本对象,我想在文本对象上显示一个字符串。当字符串的宽度大于100时,我想更改字符串的字体/大小,这样字符串就可以完美地嵌入对象内部String 文本对象中的JavaFX调整字符串大小,string,object,text,fonts,javafx,String,Object,Text,Fonts,Javafx,我正在尝试制作一个宽度为100的文本对象,我想在文本对象上显示一个字符串。当字符串的宽度大于100时,我想更改字符串的字体/大小,这样字符串就可以完美地嵌入对象内部 我搜索了很多,但找不到方便的解决方案。您可以通过使用提供的字符串和设置字体来了解文本对象的宽度。如果宽度大于100,请不断减小字体大小,直到文本宽度小于100 您可以找到如下所述的宽度: 示例代码 package application; import javafx.application.Application; import
我搜索了很多,但找不到方便的解决方案。您可以通过使用提供的字符串和设置字体来了解文本对象的宽度。如果宽度大于100,请不断减小字体大小,直到文本宽度小于100 您可以找到如下所述的宽度: 示例代码
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);
}
}