0
這是一個簡單的程序,我寫了一個圓角矩形背景上的舞臺上的按鈕。測量JavaFX文本的長度
package definitive_guide;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Toolkit;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.SceneBuilder;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonBuilder;
import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.StackPaneBuilder;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.shape.RectangleBuilder;
import javafx.scene.text.Font;
import javafx.stage.Stage;
public class SingleButton extends Application {
Button btn;
Scene scene;
StackPane stack;
Rectangle roundedRectangle;
@Override
public void start(Stage stage) throws Exception {
btn = ButtonBuilder
.create()
.font(Font.font("DejaVu Sans Mono",22))
.text("Hello World")
.build();
roundedRectangle = RectangleBuilder
.create()
.width(300)
.height(300)
.arcHeight(150)
.arcWidth(200)
.fill(Color.rgb(128, 128, 128))
.build();
stack = StackPaneBuilder
.create()
.children(roundedRectangle , btn)
.build();
stack.setMaxSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE);
scene = SceneBuilder
.create()
.root(stack)
.build();
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
Application.launch("definitive_guide.SingleButton.java");
}
}
現在,手動輸入長方形的長度,寬度和弧的值。所以,他們不是動態的。
我希望能夠根據文本的大小和一些填充來設置其大小,以便在不同分辨率的設備上具有一致的外觀和感覺。
在Swing中,FontMetrics
很方便,但我不知道在JavaFX中該做什麼。
我該怎麼做?
什麼版本的JavaFX?在FX8中沒有公開的API,其中所有的字體都從低級抽象出來。 – tomsontom
@tomsontom版本2.2 –