2014-04-14 14 views
6

Utworzyłem TitledPane w JavaFX z jednym składnikiem dziecięcej (przycisk A) następująco:Jak ustawić/usunąć wypustki w JavaFX TitledPane

<?import java.lang.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 

<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"> 
    <children> 
     <TitledPane animated="false" layoutX="137.0" layoutY="60.0" prefHeight="400.0" prefWidth="600.0" text="untitled" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> 
      <content> 
       <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" > 
        <children > 
         <Button layoutX="193.1875" layoutY="133.5" mnemonicParsing="false" prefHeight="374.0" prefWidth="598.0" text="Button" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" /> 
        </children> 
       </AnchorPane> 
      </content> 
     </TitledPane> 
    </children> 
</AnchorPane> 

To wygląda jak poniżej. Jest trochę spacji wokół przycisku, chciałbym zmniejszyć to do 0, a może, do pojedynczego piksela. Nie widzę żadnej właściwości ani AnchorPane, ani TitledPane, która to zrobi. Czy istnieje taka własność?

enter image description here

Odpowiedz

11

użytkowania Scenic View dowiedzieć się problemy takie jak ten.

Punkt zakotwiczenia wewnątrz obszaru TitledPane posiada obicie o wielkości 0,8em (10 pikseli) ze wszystkich stron. Jest to zdefiniowane w domyślnym arkuszu stylów, modena.css. Można go zresetować w FXML:

<?import java.lang.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 
<?import javafx.geometry.Insets?> 

<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"> 
    <children> 
     <TitledPane animated="false" text="untitled" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> 
      <content> 
       <AnchorPane > 
       <padding> 
         <Insets top="0" right="0" left="0" bottom="0"/>     
       </padding> 
        <children > 
         <Button mnemonicParsing="false" text="Button" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" /> 
        </children> 
       </AnchorPane> 
      </content> 
     </TitledPane> 
    </children> 
</AnchorPane> 

lub z zewnętrznego arkusza stylów z

.titled-pane > * > * > AnchorPane { 
    -fx-padding: 0em ; 
} 
+0

Świetna propozycja na widok sceniczny – PhilDin

+0

@James_D: Próbowałem tego, ale z jakiegoś powodu rozwiązanie CSS nie działa. Zrobiłem nowe pytanie na ten temat: http://stackoverflow.com/questions/29607725/remove-insets-in-javafx-titledpane-with-css-not-working – Perneel

1

już answered on a similar question, ale także chcą, aby opublikować go tutaj, ponieważ doskonale pasuje na to pytanie.

Aby przedłużyć @ odpowiedź James_D za:

Jeśli nie używać AnchorPane jako treść w TitledPane „s, ale jakiś inny węzeł, trzeba wyregulować CSS odpowiednio.

Uniwersalne rozwiązanie CSS do usuwania obicia na zawartość danego TitledPane „s, bez względu na to, jaki rodzaj Node służy jako treść jest następująca:

.titled-pane > .content > * { 
    -fx-padding: 0px; 
} 

To ustawia dopełnienie dla każdego dziecka z TitledPane treść do 0px.