2016-07-13 14 views
-2

Was ich versuche zu erstellen ist eine scrollbare All-Button-GUI-Layout. Ich konnte dies mit 4 verschiedenen ListViews erreichen, aber die vier Scrollbalken, die den Listenansichten zugeordnet waren, gefielen mir nicht. Die Anzahl der Schaltflächen wird zur Laufzeit ermittelt, da dies von der Anzahl der Einträge in einer Datenbank abhängt. Ich denke, ein TableView wird für meine Situation besser sein.Suchen Sie zum Beispiel Code eines JavaFx TableView mit nur einem Button in einer Spalte?

enter image description here

+0

A Gridview eine bessere Lösung – Westranger

+0

Dank sein würde! Werde versuchen. Fügt der Gidview Scrolling hinzu, sobald die Summe der Schaltflächenhöhe größer ist als die Ansichtshöhe? – Sedrick

+0

Nein, Sie müssen es in ein ScrollPane wickeln, dann scrollen wird automatisch behandelt – Westranger

Antwort

1

Einlochen GridPane innerhalb eines ScrollPane wäre eine bessere Lösung

<ScrollPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"> 
    <content> 
     <GridPane> 
     <columnConstraints> 
      <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> 
     </columnConstraints> 
     <rowConstraints> 
      <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> 
     </rowConstraints> 
     </GridPane> 
    </content> 
</ScrollPane> 

Mit diesem Code Sie die Anzahl der Spalten und Zeilen hinzufügen können, die Sie benötigen

myGridPane.getRowConstraints().clear(); 
myGridPane.getColumnConstraints().clear(); 

int numRow = 10; 
int numCol = 20; 

for (int i = 0; i < numRow; i++) { 
    RowConstraints rConstraint = new RowConstraints(); 
    rConstraint.setPercentHeight(100); 
    myGridPane.getRowConstraints().add(rConstraint); 
} 

for (int i = 0; i < numCol; i++) { 
    ColumnConstraints cConstraint = new ColumnConstraints(); 
    cConstraint.setPercentWidth(100); 
    myGridPane.getColumnConstraints().add(cConstraint); 
} 

Wenn Sie jetzt einen Knopf an einer bestimmten Position innerhalb des GridPane setzen möchten, können Sie th. Tun ist mit den statischen Methoden der Klasse GridPane

GridPane.setColumnIndex(myButtonXY, colX); 
GridPane.setRowIndex(myButtonXY, colY); 
+0

Danke! Aus irgendeinem Grund GridPane.setColumnIndex (myButtonXY, colX); und GridPane.setRowIndex (myButtonXY, colY); würde nicht für mich arbeiten. Ich musste es in myGridPane.add ändern (myButtonXY, colx, coly); – Sedrick

+1

Vielleicht liegt das an der JDK-Version oder der JavaFX-Version :-) – Westranger

+0

Wenn meine Antwort Ihnen geholfen hat, Ihr Problem zu lösen, zögern Sie bitte nicht, es zu akzeptieren ;-) – Westranger