Кнопки одинакового размера в плитке javafx - PullRequest
0 голосов
/ 02 марта 2019

Привет, ребята. Я совершенно новый пользовательский интерфейс ... пока все мои программы основаны на тексте.Я только начал, и я использую JAVAFX.Я хотел воссоздать телефонную клавиатуру.Он должен иметь 4 ряда по 3 кнопки в каждой, и каждая кнопка должна иметь соответствующий номер вместе с буквами.И это так.Но размер кнопок не одинаков.

enter image description here

Я имею в виду ... так как я использую плитку, кнопки занимают одинаковое количество пикселей (или, по крайней мере, я так думаю), но фактический видимый размер кнопок отличается, потому что каждая кнопка принимает только тот размер, который ей необходим для отображения ее содержимого.Я сохранил кнопки в массиве.Есть ли способ сделать их всех одного размера с самыми большими?

public class PhoneKeyboard extends Application
{

    Button buttons [];
    @Override
    public void start(Stage stage) throws Exception
    {
        // Create the set of necessary buttons.
        buttons = new Button[12];
        fillButtons(buttons);
        //Create the grid for the buttons.
        TilePane pane = new TilePane();
        pane.setPadding(new Insets(10,10,10,10));
        pane.setPrefColumns(3);
        pane.setMaxWidth(Region.USE_PREF_SIZE);// Use the pref size as max size to make sure there will be the expected size
        pane.setVgap(5.0);// to set ome spacing between each tile of the pane.
        pane.setHgap(5.0);
        //Put the buttons on the pane (layout);
        pane.getChildren().addAll(buttons); 
        // JavaFX must have a Scene (window content) inside a Stage (window)
        Scene scene = new Scene(new StackPane(pane), 300,400);// In order to use the pfer size of the pane, the tile Pane doesn"t have to be the root in the scene. Therefore we created a scene with a stack pane containing our tile pane as the root. 
        stage.setTitle("Keyboard");
        stage.setScene(scene);
        // Show the Stage (window)
        stage.show();
}

1 Ответ

0 голосов
/ 02 марта 2019

Кнопка имеет максимальную ширину и максимальную высоту, которые достаточно велики для содержания содержимого кнопки.Большинство макетов, включая TilePane, не будут делать дочерние узлы больше своего максимального размера.

Если вы хотите, чтобы каждая кнопка могла быть увеличена, установите максимальную ширину и высоту после вызова fillButtons:

for (Button button : buttons) {
    button.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
}
...