Java Swing hat GridLayout
, mit dem Sie eine Größe für ein Array von Widgets wie 3X4 angeben können. Die Widgets füllen dann das Feld, das sie belegen. Wie erhalten Sie einen ähnlichen Effekt in JavaFX?Wie bekomme ich Schaltflächen, um eine Javafx-Gridpane zu füllen?
Antwort
Ich denke, Sie fragen, wie Sie einen Knoten den Raum zu füllen, der seiner Zelle in einem Rasterbereich zugewiesen ist.
Es gibt mehrere Möglichkeiten, dies zu tun. Sie können entweder die statischen GridPane
Methoden GridPane
-spezifische Eigenschaftseinstellungen auf die Knoten anwenden:
GridPane grid = new GridPane();
for (int rowIndex = 0; rowIndex < numRows; rowIndex++) {
RowConstraints rc = new RowConstraints();
rc.setVgrow(Priority.ALWAYS) ; // allow row to grow
rc.setFillHeight(true); // ask nodes to fill height for row
// other settings as needed...
grid.getRowConstraints().add(rc);
}
for (int colIndex = 0; colIndex < numColumns; colIndex++) {
ColumnConstraints cc = new ColumnConstraints();
cc.setHgrow(Priority.ALWAYS) ; // allow column to grow
cc.setFillWidth(true); // ask nodes to fill space for column
// other settings as needed...
grid.getColumnConstraints().add(cc);
}
:
GridPane.setFillWidth(myButton, true);
GridPane.setFillHeight(myButton, true);
Der andere Weg für Spalten und Zeilen Einschränkungen auf dem Gitter Bereich selbst zu spezifizieren, In beiden Fällen müssen Sie die Knoten wachsen lassen, damit sie die Anforderung zum Erweitern des Grid-Bereichs erfüllen. So, z.B .:
Button myButton = new Button("Click");
myButton.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
grid.add(myButton, 0, 0);
SSCCE (Zeilen- und Spaltenbedingungen Methode):
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.RowConstraints;
import javafx.stage.Stage;
public class KeyPad extends Application {
@Override
public void start(Stage primaryStage) {
GridPane grid = new GridPane();
int numRows = 4 ;
int numColumns = 3 ;
for (int row = 0 ; row < numRows ; row++){
RowConstraints rc = new RowConstraints();
rc.setFillHeight(true);
rc.setVgrow(Priority.ALWAYS);
grid.getRowConstraints().add(rc);
}
for (int col = 0 ; col < numColumns; col++) {
ColumnConstraints cc = new ColumnConstraints();
cc.setFillWidth(true);
cc.setHgrow(Priority.ALWAYS);
grid.getColumnConstraints().add(cc);
}
for (int i = 0 ; i < 9 ; i++) {
Button button = createButton(Integer.toString(i+1));
grid.add(button, i % 3, i/3);
}
grid.add(createButton("#"), 0, 3);
grid.add(createButton("0"), 1, 3);
grid.add(createButton("*"), 2, 3);
Scene scene = new Scene(grid);
primaryStage.setScene(scene);
primaryStage.show();
}
private Button createButton(String text) {
Button button = new Button(text);
button.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
button.setOnAction(e -> System.out.println(text));
return button ;
}
public static void main(String[] args) {
launch(args);
}
}
Sie können ein GridPane in JavaFX dafür verwenden. In Java-Code können Sie es durch
GridPane pane = new GridPane();
erstellen und verschiedene Knoten, um es hinzuzufügen, zum Beispiel wie
Label label = new Label();
pane.add(label, 0,0);
Dies wird ein Etikett auf der ersten Zeile und der ersten Spalte der GridPane hinzufügen . Für komplexere GUIs können Sie den SceneBuilder verwenden.
Ich weiß, wie die Dinge zu einem Gitterfenster hinzuzufügen. Was ich will, ist zum Beispiel ein Array von Knöpfen, um die Region vollständig zu füllen, die die Gridpanel besetzt. – ncmathsadist
- 1. Wie bekomme ich meinen AlertDialog, um die übergeordnete Breite zu füllen
- 2. Mit Linq, um eine Klasse zu füllen
- 3. Wie bekomme ich diese Schaltflächen inline?
- 4. Wie bekomme ich Datei-Druck um eine Ausgabe zu erstellen?
- 5. Wie bekomme ich Cloud9, um eine "globale" Variable zu akzeptieren?
- 6. Wie bekomme ich SpecFlow, um eine Ausnahme zu erwarten?
- 7. Wie bekomme ich eine Abfrage, um die Gesamtzeilen zu zählen?
- 8. Wie bekomme ich ps um eine Gruppe zu drucken?
- 9. Wie bekomme ich Nhibernate, um eine Schemaänderung zu erkennen?
- 10. Wie bekomme ich ein Anchor-Tag, um die Breite einer Tabellenzelle zu füllen?
- 11. Wie bekomme ich ein Android TableLayout, um den Bildschirm zu füllen?
- 12. Wie bekomme ich ein Android TableLayout, um die Eltern im Querformat zu füllen?
- 13. Wie bekomme ich einen linken und rechten Rahmen um TKinter zu füllen?
- 14. Wie bekomme ich Großbuchstaben, um Jars mit Abhängigkeits-Metadaten zu füllen?
- 15. Wie bekomme ich ein UserControl zum dehnen, um den zugewiesenen Platz zu füllen?
- 16. Wie bekomme ich ein Hintergrundbild/Bild, um den Container per CSS zu füllen?
- 17. Wie verwende ich DomainContext.Load, um Eigenschaften meines ViewModel zu füllen?
- 18. Wie SharedPreferences Wert zu verwenden, um EditText zu füllen?
- 19. Wie verwende ich JS, um verfügbaren Speicherplatz zu füllen?
- 20. Wie erzeuge ich Zufallszahlen, um leere Zeilen zu füllen?
- 21. Wie mache ich Textarea, um Div-Block zu füllen?
- 22. Wie gebe ich Schaltflächen Aktion Hörer, wie ich Schaltflächen erstellen?
- 23. Wie bekomme ich eine Option, um eine Nachricht zu senden, wenn ich auf eine Schaltfläche klicke?
- 24. Wie verwende/mappiere ich eine Datenbankansicht, um eine enthaltene Sammlung zu füllen?
- 25. Wie bekomme ich eine <table> mit Spalten mit fester Breite, um die gesamte Breite des Containers zu füllen?
- 26. Stil, um Schaltflächen anders zu senden
- 27. Eine Methode, um onTouchListener() für mehrere Schaltflächen zu implementieren
- 28. Wie erstellt man eine Ansicht, um den Abstand zwischen zwei Ansichten zu füllen?
- 29. Beste Lösung, um DynamoDb Tabelle zu füllen
- 30. Wie bekomme ich OnClick() von programmatisch hinzugefügten Schaltflächen?
Ausgezeichnet! Vielen Dank! +1 und akzeptieren. – ncmathsadist
Um es in CSS zu tun: (In meinem Fall war die Einstellung maxwidth unendlich genug) '.mygridPane Button { \t -fx-Max-Breite: Unendlichkeit; } ' – pdem