Javafx 如何将不同文本大小的标签与bottom对齐?
我有两个不同的标签,一个大的显示一个变化的文本,一个小的显示一个%符号,必须更小 我将这两个文本放在网格窗格中,并将左侧文本与右下角对齐,将右侧文本与左下角对齐,因此两者之间没有间隙: 如何使两个文本对齐,使它们看起来像下图Javafx 如何将不同文本大小的标签与bottom对齐?,javafx,Javafx,我有两个不同的标签,一个大的显示一个变化的文本,一个小的显示一个%符号,必须更小 我将这两个文本放在网格窗格中,并将左侧文本与右下角对齐,将右侧文本与左下角对齐,因此两者之间没有间隙: 如何使两个文本对齐,使它们看起来像下图 事后看来,TextFlow本来是一个更好的解决方案,但我现在太投入我的项目了,无法改变这一点。这取决于你是如何构建场景的。如果使用的是FXML/Scene Builder,则应将GridPane行的valignment属性设置为基线 下面是一个完整的FXML,它可以复制您的
事后看来,TextFlow本来是一个更好的解决方案,但我现在太投入我的项目了,无法改变这一点。这取决于你是如何构建场景的。如果使用的是FXML/Scene Builder,则应将GridPane行的valignment属性设置为基线 下面是一个完整的FXML,它可以复制您的屏幕截图,而无需设置样式:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.*?>
<GridPane xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/11.0.1">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"/>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"/>
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="-Infinity" valignment="BASELINE" vgrow="SOMETIMES"/>
</rowConstraints>
<children>
<Label style="-fx-font-size: 5.0em;" text="44"/>
<Label style="-fx-font-size: 3.0em;" text="\%" GridPane.columnIndex="1"/>
</children>
</GridPane>
结果是:
对不起,颜色很奇怪;我的屏幕帽软件有问题。请为该行添加一个,然后将设置为。
import javafx.application.Application;
import javafx.geometry.VPos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Region;
import javafx.scene.layout.RowConstraints;
import javafx.stage.Stage;
public class TextAlignSample extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
// Simple Interface
GridPane root = new GridPane();
RowConstraints constraints = new RowConstraints(
Region.USE_PREF_SIZE,
Region.USE_COMPUTED_SIZE,
Region.USE_COMPUTED_SIZE);
constraints.setValignment(VPos.BASELINE);
root.getRowConstraints().add(constraints);
// Add our Labels
root.add(new Label("44") {{
setStyle("-fx-font-size: 5.0em");
}}, 0, 0);
root.add(new Label("%") {{
setStyle("-fx-font-size: 3.0em");
}}, 1, 0);
// Show the stage
primaryStage.setScene(new Scene(root));
primaryStage.setTitle("TextAlignSample Sample");
primaryStage.show();
}
}