AWT (и Swing) компоненты обычно являются прямоугольными (выровненными по осям).
Но это не обязательно должно иметь место - в то время как реальные границы должны быть прямоугольными, фактическая область, которую использует компонентможет быть меньше.Компонент поддерживает метод contains(Point)
, который вызывается механизмом диспетчеризации событий всякий раз, когда возникает вопрос, к какому компоненту относится точка - например, для щелчков мыши.(Перекрытие различных компонентов будет обрабатываться z-порядком внутри родительского контейнера.)
Вы можете реализовать этот метод на основе метода Shape.contains()
, используя аффинно преобразованный прямоугольник в качестве фигуры.Каждый из ваших повернутых компонентов будет знать свою собственную форму (или генерировать ее на лету из своего AffineTransform, того же самого, который также будет использоваться для рисования самого себя).
Иметь собственный LayoutManager, который также упорядочивает ваши карты,(Не используйте CardLayout, несмотря на название.)
Я не уверен, что следую способу иметь отдельные компоненты для каждой карты, но вам определенно нужны некоторые объекты, представляющие повернутые прямоугольники.