Я пытался сделать настольную игру в Java, и я застрял со следующей проблемой.
Я хочу создать объект, который можно рисовать в jpanel. Назовем этот объект Board. Эту доску я хочу, чтобы она была составным объектом других досок. Следовательно, когда я вызываю (назовем это) метод paint () для доски, для правильной окраски он должен будет сам вызывать paint, а также вызывать методы paint () его вспомогательных плат и т. Д.
Я знаю, что это похоже на уже реализованное поведение (кто-то может сказать ... просто создать Jpanel в Jpanel), но разница в том, что для объекта Board я хочу иметь возможность перетаскивать его в любое место на Jpanel. Кроме того, Jpanel может содержать много досок, которые можно перетаскивать куда-либо внутри (они также могут перекрываться). Так что такого рода поведение ограничивает меня от использования компонентов Java Swing, потому что все они используют макеты, а это не то, что я хочу.
Наконец, когда я добавляю объект платы на доску, координаты, которые я использую, хотят быть относительными к родительской плате, а не к Jpanel. (т.е. когда я добавляю доску B к доске A, и я хочу добавить доску B к (x, y) = (10,10), эти координаты относительно местоположения A)
Это какой-нибудь способ сделать это? Я не ищу полный пример, просто для общих идей (желательно чистых!)
PS. Я реализовал то, что почти работает. Проблема в моей реализации состоит в том, что Graphics g, класс Board, используемый для рисования, взят из JPanel, а координаты x, y относительно JPanel для всех плат (а не родительской платы в случае добавления платы). на материнскую плату, а не напрямую на JPanel).
Я не знаю, является ли это плавким, но я представляю, что листовая доска на самом деле рисует сам с начальными координатами (0,0), которые каким-то образом в JPanel переносятся в (x, y) в зависимости от фактического расположение в Jpanel платы.
Спасибо!