Как создать правильный макет для поля шестиугольника на java swing?

#java #swing #layout-manager

Вопрос:

Я создаю поле из виджетов, которые представляют собой изображения шестиугольников. Они выглядят так, как на этом изображении:

1

Но они мне нужны вот так:

2

Я думаю, что там должна быть какая-то хитрая планировка…

     content.setLayout(new GridLayout(6,6));
    content.setBounds(0, 0, 700, 700);       

    Cell[][] cells = game.getField().getCells();
    for(Cell[] c: cells){
        for(Cell cell : c){
            content.add(new CellWiget(cell));
        }
    }

    pack();

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);`
 

Комментарии:

1. В долгосрочной перспективе вам, вероятно, придется подумать о создании пользовательского менеджера макетов

2. Я бы создал JPanel для рисования и нарисовал изображения в правильных положениях. Учебник Oracle по выполнению пользовательской живописи покажет вам, как это сделать.

3. Какова цель этого макета? Ожидается ли, что пользователь будет взаимодействовать с ним (например, если это кнопки). Является ли это чисто визуальным (без взаимодействия с пользователем)? Хотя MadProgrammer может быть прав в некоторых случаях использования, для чисто визуального поля шестиугольников, у меня возникнет соблазн последовать предложению @GilbertLeBlanc-и, возможно, даже если между шестиугольниками и пользователем есть какой — то интерактивный элемент.

4. Я думаю, что должен быть какой — то сложный макет… — только если вы его напишете или сможете найти, выполнив поиск на этом сайте или в Интернете.