Как мне выложить кнопки, чтобы они шли сверху вниз слева направо (заполняя первый ряд, затем второй) - PullRequest
0 голосов
/ 08 декабря 2018

Таким образом, у меня есть заполненные JPanel кнопки и только кнопки J: Like this

Как сделать так, чтобы только кнопка 1 и кнопка 20 были видимыми, чтобы расположение кнопок сталоLike this и если бы у меня был Jbuuton 15 Visible, он был бы между JButton 1 и 20.

Я пытаюсь просто привязать его к верху и левому краю и установитьинтервал до 0, но он делает это: What is happening for me

Я не могу дать код, так как он сделан в сгенерированном коде NetBeans, а кнопки настройки программы для отображения зависят отмного других вещей, поэтому его независимость займет много времени.

Редактировать: Использование метода для добавления JButtons в сетку с помощью метода в моем случае

public static void RedoGridLayout(){
    GridLayout UpgradesLayout = new GridLayout(0,5);
    CookieclickerGUI.Panel_Upgrade.setLayout(UpgradesLayout);

    for(int i = 0; i<upgrades.size(); i++){
        Upgrades upgrade = upgrades.get(i);
        JButton Button = upgrade.getJButton();
        if(Button.isVisible()){
            CookieclickerGUI.Panel_Upgrade.add(Button);
            System.out.println("Added...\n" + Button + "\nButton to the grid");
        }
    }
}

thisКак бы то ни было, добавьте кнопку в сетку в Bottom , а не вверху, поэтому, если вы хотите увидеть кнопки, вам нужно прокрутить вниз.

EDIT 2: * Кнопки расположены внизу, так как остальные кнопки все еще были на панели (ofc tэто было так), выполнив команду .removeAll();, прежде чем расположить кнопки в левом верхнем углу, но выдвинуть их до всей панели.это я исправил, добавив все кнопки, которые были !.isvisible() после того, как кнопка стала правильной формы.

1 Ответ

0 голосов
/ 10 декабря 2018

Ответ на мой вопрос был GridLayout.он поместил мои кнопки в нужную мне сетку.

Решение для сетки, расположенной внизу, было из-за простой ошибки, когда я добавил сетку в макет, когда в ней было много кнопок, для которых установлено значение.setvisible(false); поэтому программа разместила его после всех кнопок.это было исправлено простым .removeAll(); удалением всех JComponents, которые были сохранены в нем.

Примечание , что я сохранил все свои JComponents в массиве JButton, так как у меня были только кнопки, а позже сделалдля цикла, выполняемого через массив, проверяющий, видим ли он или нет, и добавлен ли он в сетку.

...