Пользовательский макет Java Swing

Я хочу сделать такую ​​доску (карту) на Java.

введите описание изображения здесь

Каждый маленький шестиугольник - это изображение.

Предположим, у меня есть два класса Java. Холст (большой шестиугольник) и шестиугольник. Во-первых, это вся доска, из которой я произвольно генерирую все маленькие шестиугольники. Оба класса являются производными от JPanel. Теперь у меня есть GridLayout. Как мне устроить такой макет?


person Tigran Tokmajyan    schedule 05.03.2012    source источник
comment
gridLayout делает строки и столбцы. Ваш должен пересекаться. Возможно, вам придется использовать абсолютное позиционирование (без диспетчера компоновки).   -  person stark    schedule 05.03.2012
comment
Если можете, попробуйте свои силы на GroupLayout, это может помочь вам разобраться во всем.   -  person nIcE cOw    schedule 05.03.2012
comment
Могу я предложить совершенно другой подход: не используйте инструментарий, предназначенный для создания Desktop-приложений для игр.   -  person Bobby    schedule 05.03.2012


Ответы (3)


Зачем вам нужны маленькие шестигранные панели? Я бы предпочел просто определить список (список шестиугольников), каждый с желаемой позицией, и просто переопределить метод paintComponent() основного JPanel. Вы можете использовать этот http://java-sl.com/shapes.html для создания шестиугольников. .

Чтобы отслеживать щелчок мышью, вы можете использовать метод contains () формы.

person StanislavL    schedule 05.03.2012
comment
+1 В этом связанном вопросе и ответе есть интересный материал и несколько советов по геометрии. - person trashgod; 05.03.2012

ты сможешь

1) common way (общий путь)

  • путем рисования в JPanel/JComponent путем переопределения paintComponent() (я предположил, что есть Image/BufferedImage/Icon/ImageIcon)

2) по месту Icon/ImageIcon до JLabel

person mKorbel    schedule 05.03.2012
comment
+1 но самое сложное - обрабатывать события мыши для перекрывающихся шестиугольников. - person StanislavL; 05.03.2012

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

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

person Michael Borgwardt    schedule 05.03.2012