Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 文本对象中的JavaFX调整字符串大小_String_Object_Text_Fonts_Javafx - Fatal编程技术网

String 文本对象中的JavaFX调整字符串大小

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时,我想更改字符串的字体/大小,这样字符串就可以完美地嵌入对象内部


我搜索了很多,但找不到方便的解决方案。

您可以通过使用提供的字符串和设置字体来了解文本对象的宽度。如果宽度大于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);
    }
}