BoxLayout в Java или GUIёвый вопрос
Пытаюсь получить табличку из кнопок в центре фрейма, но они растягиваюстся на всё окно. Видно, диспетчер компоновки игнорирует метод setPreferredSize(). Может, у кого-то есть ответ, как это можно исправить.
import java.awt.*;
import javax.swing.*;
class GridTest
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
JPanel panel = new JPanel();
JPanel panelB = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panelB.setAlignmentX(Component.CENTER_ALIGNMENT);
GridLayout grid = new GridLayout(3,3);
panelB.setLayout(grid);
Icon[] icon = new Icon[24];
icon[0] = new ImageIcon("Img/Item/ArmletMordiggian.gif");
icon[1]= new ImageIcon("Img/Item/AssaultCuirass.gif");
icon[2] = new ImageIcon("Img/Item/Mekansm.gif");
icon[3] = new ImageIcon("Img/Item/Bloodstone.gif");
icon[4] = new ImageIcon("Img/Item/Butterfly.gif");
icon[5] = new ImageIcon("Img/Item/Chainmail.gif");
icon[6] = new ImageIcon("Img/Item/Eaglehorn.gif");
icon[7] = new ImageIcon("Img/Item/EnergyBooster.gif");
icon[8] = new ImageIcon("Img/Item/GlovesHaste.gif");
JButton[]button = new JButton[9];
for (int i=0;i<9;i++)
{
button[i] = new JButton(icon[i]);
button[i].setPreferredSize(new Dimension(32,32));
panelB.add(button[i]);
}
panel.add(panelB);
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setSize(500,500);
frame.setVisible(true);
}
}
Источник: Stack Overflow на русском