Knöpfe im Gridpane -Stapel übereinander

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Knöpfe im Gridpane -Stapel übereinander

by Anonymous » 19 Aug 2025, 08:05

Ich habe ein Problem damit, ein Raster von Tasten richtig anzuzeigen. Ich brauche im Wesentlichen Folgendes: < /p>

Die Schaltflächen müssen sich im zweiten Bild in einem Raster befinden. Der erste Screenshot), bis einer von ihnen geklickt wird (siehe zweite Screenshot). Beachten Sie, dass eine Klick -Schaltfläche nur die Schaltflächen in ihrem Feld "fixieren". < /P>
Für den Kontext versuche ich, das Murdle des Spiels als Desktop -Anwendung neu zu erstellen, und ich muss sicherstellen, dass es auf anderen Bildschirmen als meinen eigenen funktioniert. StateButton ist im Wesentlichen nur eine Wrapper, um eine Taste mit einigen Spieldaten zu kombinieren. Ich kann das bei Bedarf hinzufügen


Ich habe versucht, die Vorabbreite der Schaltflächen an ihre Höhe zu binden. Ich habe auch versucht, die Zeilenbreiten der Raster -Schädigung zu ändern. All dies endet mit unerwartetem Verhalten, bei dem die Schaltflächen während der Größenänderung nicht als Netz bleiben. Mein Code folgt.

Code: Select all

private GridPane drawBlock(Block block) {
GridPane gridPane = new GridPane();
gridPane.getStyleClass().add("board-block");

DoubleProperty doubleProperty = new SimpleDoubleProperty();

for (int i = 0; i < block.getRowsList().size(); i++) {
for (int j = 0; j < block.getRowsList().get(i).getBoxes().size(); j++) {
StateButton stateButton = new StateButton();
stateButton.setBox(block.getRowsList().get(i).getBoxes().get(j));
stateButton.setOnAction(e -> stateButton.updateState());
stateButton.textProperty().bind(stateButton.getBox().stateIconProperty());

//            stateButton.maxHeightProperty().bind(stateButton.widthProperty());
stateButton.prefHeightProperty().bind(stateButton.widthProperty());
//            stateButton.minHeightProperty().bind(stateButton.widthProperty());
stateButton.getBox().setState(Box.BoxState.UNSURE);
stateButton.getBox().update();
if (i+j==0) doubleProperty.bind(stateButton.widthProperty());
}
}

RowConstraints rowConstraints = new RowConstraints();
rowConstraints.prefHeightProperty().bind(doubleProperty);

gridPane.getRowConstraints().add(rowConstraints);

return gridPane;
}

Top