我这辈子都无法让 JavaFX 换行文本。相反,我的盒子获得了 Text
的大小。
这是我的主要内容:
BorderPane main = FXMLLoader.load(getClass().getResource("main.fxml"));
primaryStage.setTitle("D394");
primaryStage.setScene(new Scene(main, 1000, 500));
primaryStage.getScene().getStylesheets().add("main.css");
primaryStage.show();
这是我的 main.fxml。它很大,很抱歉。
<BorderPane prefHeight="401.0" prefWidth="900.0" xmlns="http://javafx.com/javafx/8.0.112-ea"
xmlns:fx="http://javafx.com/fxml/1" fx:controller="ro.softvisionmedia.gui.MainController">
<top>
<MenuBar fx:id="menuBar" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity">
<Menu items="" text="Lala">
</Menu>
</MenuBar>
</top>
<center>
<TabPane fx:id="tabPane">
<Tab id="tab_1" fx:id="tab1_D394" closable="false" text="D394">
</Tab>
<Tab fx:id="tab2_DateIdentif" closable="false" text="Date identificare">
<TabPane fx:id="tabPane_dateIdentif">
<Tab fx:id="identifPersTVA" closable="false" text="Persoana inregistrata in scopuri de TVA">
</Tab>
<Tab fx:id="identifRepFiscal" closable="false" text="Reprezentant fiscal/legal/imputernicit">
</Tab>
<Tab fx:id="identifIntocmit" closable="false" text="Intocmitor">
<VBox fx:id="vBoxIntocmitor">
<HBox>
<TextFlow>
<Text text="Subsemnatul "/>
<Text fx:id="denumireRtext"/>
<Text text=", in calitate de reprezentant legal, "/>
<TextField fx:id="functieReprez"/>
<Text>declar, sub
sanctiunile aplicate faptei de fals in acte publice, ca datele din aceasta
declaratie sunt corecte si complete, iar persoana care a intocmit prezenta
declaratie este
</Text>
</TextFlow>
</HBox>
<HBox>
<Label text="Denumire/nume prenume"/>
<TextField fx:id="denumireIntocmitor"/>
<Label text="CUI/CNP/NIF"/>
<TextField fx:id="cifIntocmitor"/>
</HBox>
<HBox>
<Label text="Persoana juridica"/>
<RadioButton fx:id="tipIntocmitorPJ"/>
<Label text="Calitate"/>
<TextField fx:id="calitateIntocmitor"/>
</HBox>
<HBox>
<Label text="Persoana fizica"/>
<RadioButton fx:id="tipIntocmitorPF"/>
<Label text="Functia in cadrul persoanei impozabile"/>
<TextField fx:id="functieIntocmitor"/>
<Label text="Alta calitate"/>
<Text text="?????"/>
<!-- @todo ce vine aici? -->
</HBox>
<HBox>
<TextFlow>
<Text text="De asemenea, subsemnatul "/>
<Text fx:id="denumireRtext2"/>
<Text text=",in calitate de reprezentant legal "/>
<Text fx:id="functieReprezText"/>
<Text text=" declar:"/>
</TextFlow>
</HBox>
<HBox>
<Text>1. sunt de acord ca, pentru anul fiscal 2016, in sensul prevederilor art. 11 alin
(3) lit. d) din Legea nr. 207/2015 privind Codul de procedura fiscala, datele
inscrise in
prezenta declaratie referitoare la tranzactiile derulate cu fiecare persoana
impozabila (client/furnizor) inregistrata in scopuri de TVA sa fie consultate de
catre aceasta
prin intermediul aplicatiei informatice pusa la dispozitie de ANAF.
</Text>
<RadioButton fx:id="optinueDA" text="Da"/>
<RadioButton fx:id="optiuneNU" text="Nu"/>
</HBox>
<HBox>
<Text>2. Sunt de acord cu schimbarea optiunii , astfel ca pentru anul fiscal 2016, in
sensul prevederilor art. 11 alin (3) lit. d) din Legea nr. 207/2015 privind Codul de
procedura fiscala, datele inscrise in prezenta declaratie referitoare la
tranzactiile derulate cu fiecare persoana impozabila (client/furnizor) inregistrata
in scopuri de
TVA sa fie consultate de catre aceasta prin intermediul aplicatiei informatice pusa
la dispozitie de ANAF
</Text>
<RadioButton fx:id="schimbOptiuneDA" text="Da"/>
<RadioButton fx:id="schimbOptiuneNU" text="Nu"/>
</HBox>
</VBox>
</Tab>
</TabPane>
</Tab>
</TabPane>
</center>
<bottom>
<HBox prefHeight="0.0" prefWidth="897.0">
<Button onAction="#nextTab" text="Pagina urmatoare"/>
<Button onAction="#validate" text="Valideaza XML-ul"/>
<Button onAction="#validateCreate" text="Valideaza XML-ul si creeaza PDF"/>
<Button onAction="#validateCreateSign" text="Valideaza XML-ul si creeaza PDF semnat"/>
</HBox>
</bottom>
</BorderPane>
This is how it ends up looking
文本的 setPrefWidth
什么都不做
缩小 HBox
es 确实会使文本换行,但它最终会位于其他 HBox
es 的文本之上。
我想要的是让我的文本换行到 HBox
es 的宽度,它应该与父级的实际大小相同。
我的 Controller 在样式和布局方面没有做任何事情,我的 .css 也没有做任何事情。
我正在使用 java8。
最佳答案
您可以使用 wrappingWidthProperty
以像素为单位定义环绕宽度。
您可以在绑定(bind)中使用它:
textID.wrappingWidthProperty().bind(tabPane.widthProperty());
这将上述属性绑定(bind)到 TabPane
的宽度。注意:绑定(bind)到 HBox
或 VBox
将不起作用,因为它们的宽度是 Text
的实际宽度(HBox
调整为 Text
的宽度,VBox
调整为 HBox
的宽度)。
关于java - 如何使 JavaFX 文本换行工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40631744/