У меня есть простая Java-программа, которая позволяет пользователю рисовать прямоугольники на JPanel, а затем перемещать их, изменять их размер и удалять.Можно ли разрисовать один java.awt.Rectangle двумя разными граничными цветами?
Чертежная панель реализует MouseListener и MouseMotionListener. Когда событие запускается, он проверяет, какой пункт меню выбран (новый прямоугольник, перемещение, изменение размера или удаление), и реагирует соответственно.
При выборе опции 'изменить размер', методы слушателя сделать следующее:
MouseMoved называет булево detectBoundary(). Когда это возвращает true, прямоугольник, к которому принадлежит граница, устанавливается как активный прямоугольник.
MouseDragged calls void moveBoundary, который перемещает обнаруженную границу в направлении жестов перетаскивания.
Теперь, что я ищу, это способ сделать границу, которая будет перемещаться, выделяться. Я могу перекрасить весь прямоугольник в более толстые строки или другой цвет, что я и делаю сейчас, когда я устанавливаю данный прямоугольник как активный, но это не то, что я хочу. Я бы хотел перекрасить только одну границу.
Метод setBorder, который может обрабатывать метод createMatteBorder BorderFactory, кажется идеальным для этих целей, но я не смог найти способ сделать эту работу.
У кого-нибудь есть идея, как я мог это сделать?
Все предложения будут очень благодарны.
Насколько я знаю, метод setColor принадлежит классу Graphics, что означает, что я могу вызвать его, прежде чем рисовать весь прямоугольник - g.setColor (Color.RED); g.draw (activeRectangle); - но не пока я его рисую. Это дает мне совершенно красный прямоугольник, и я хочу только одну красную сторону. –
Спасибо - я скорректировал Rectangle to Graphics. – richj
Если это единственный способ сделать это с помощью Rectangles, то, возможно, мне лучше просто рисовать четыре отдельные строки, что позволит мне настроить цвет между ними. Я надеялся на несколько более элегантный подход, но спасибо, что помог мне продумать это :). –