2016-11-16 96 views
2

我不能爲我的生活做出JavaFX包裝文本。相反,我的箱子的尺寸爲Text如何使JavaFX文本換行工作?

這是我的主:

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的寬度,它應該與父實際大小相同。

我的控制器在樣式和佈局方面沒有做任何事情,我的.css也沒有做任何事情。

我正在使用java8。

回答

3

您可以使用wrappingWidthProperty來定義以像素爲單位的包裹寬度。

您可以在綁定使用它:

textID.wrappingWidthProperty().bind(tabPane.widthProperty()); 

這結合所提到的屬性設置爲TabPane的寬度。注意:綁定到HBoxVBox將不起作用,因爲它們的寬度是Text的實際寬度(HBox被調整爲Text的寬度,而VBox被調整爲HBox的寬度)。

0

我在一個簡單的對話框中有類似的需求。對話框的根是一個2x2 GridPane。每行包含一個橫跨兩列的HBox。我使用標籤在第0行的HBox中顯示消息。要包裝文本,我使用以下內容: Label label = new Label(message); label.setWrapText(true);

然後,當然,您將標籤添加到HBox。對於你的例子,或許你需要做的只是將文本更改爲標籤,這將工作。

如果您使用的是SceneBuilder,則可以進入Label的屬性選項卡並單擊WrapText複選框。