Как заставить кнопку использовать все пространство внутри BorderLayout, не оставляя пробелов? - PullRequest
1 голос
/ 12 марта 2019

У меня есть программа, которая создает сетку 8x8, заполненную случайными цветами (уже сделал этот бит), и я должен добавить кнопку внизу, которая должна заполнить всю нижнюю часть, которая будет использоваться для сбросацвета.У меня уже есть сетка и кнопка, однако моя кнопка не заполняет все пространство внизу и только около половины.Как мне заставить его заполнить все пространство?

Мой код:

public void createGUI() 
{
    guiFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    guiFrame.setTitle("Label demo");
    JPanel mainPanel = new JPanel();
    JPanel gridPanel = new JPanel();
    JPanel buttonPanel = new JPanel();
    JButton refreshButton = new JButton("Press me to refresh labels");
    mainPanel.setLayout(new BorderLayout());
    guiFrame.getContentPane().add(mainPanel);
    gridPanel.setLayout(new GridLayout(8, 8));
    for (int i = 0; i < arrayLabels.length; i++)
    {
        arrayLabels[i] = new ColorLabel(80, 80, new Color(rand.nextInt()), 0, new Color(rand.nextInt()));
    }

    for (int i = 0; i < 8*8; i++)
    {
        gridPanel.add(arrayLabels[i]);
    }
    guiFrame.getContentPane().add(gridPanel);
    buttonPanel.add(refreshButton);
    guiFrame.getContentPane().add(buttonPanel, BorderLayout.SOUTH);
    guiFrame.setVisible(true);
}

И вывод моей программы в настоящее время таков: https://imgur.com/a/fw1Bx92

1 Ответ

2 голосов
/ 12 марта 2019

Также установите макет кнопки обновления JPanel!Ниже приведен пример, который вы можете изучить:

public static void createGUI() 
{
    JFrame guiFrame = new JFrame("a");
    guiFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    guiFrame.setTitle("Label demo");
    JPanel mainPanel = new JPanel();
    JPanel gridPanel = new JPanel();
    JPanel buttonPanel = new JPanel(new BorderLayout());
    JButton refreshButton = new JButton("Press me to refresh labels");
    mainPanel.setLayout(new BorderLayout());
    guiFrame.getContentPane().add(mainPanel);
    gridPanel.setLayout(new GridLayout(8, 8));
    JLabel arrayLabels[] = new JLabel[64];
    for (int i = 0; i < 64; i++)
    {
        arrayLabels[i] = new JLabel("a");
    }

    for (int i = 0; i < 8*8; i++)
    {
        gridPanel.add(arrayLabels[i]);
    }
    guiFrame.getContentPane().setLayout(new BorderLayout());
    guiFrame.getContentPane().add(gridPanel,BorderLayout.CENTER);
    buttonPanel.add(refreshButton,BorderLayout.CENTER);
    guiFrame.getContentPane().add(buttonPanel, BorderLayout.SOUTH);
    guiFrame.setVisible(true);
}
...