Включение графики / фигур в мой графический интерфейс Java
Я нахожусь в середине моего первого независимого Java-проекта, и у меня ограниченные знания всех библиотек в моем распоряжении, но я чувствую себя довольно комфортно с языком. Для этого проекта требуется графический интерфейс с JTextArea, который отображает инструкции для руководства пользователя с левой стороны, и JPanel с некоторыми кнопками с правой стороны. На моей панели я хочу включить компонент с простым рисунком - скажем, три прямоугольника разных размеров и разных цветов - и добавить разные actionListeners в каждый прямоугольник. Как мне начать реализовывать это? Какой компонент я могу добавить в свою JPanel, что позволит мне достичь этого?
Любые советы высоко ценится.
4 ответа
Вы можете отобразить объекты Shape, такие как Rectangle2D, среди прочего, в paintComponent(...)
метод JPanel, а затем идентифицируйте клики для фигур, добавив MouseListener к JPanel. Если вы собираетесь изменять размеры различных форм, я бы не использовал JButton или что-то подобное, а просто один MouseListener или MouseAdapter, добавленный к одному чертежу JPanel. Форма имеет contains(Point p)
метод, который вы можете использовать, чтобы увидеть, были ли нажаты какие-либо из фигур.
В частности:
На моей панели я хочу включить компонент с простым рисунком - скажем, три прямоугольника разных размеров и разных цветов
Три объекта Rectangle2D могут соответствовать этому счету, объявленные в классе, расширяющем JPanel, и нарисованные в этом JPanel. paintComponent(Graphics g)
метод. Вам нужно будет привести объект Graphics к Graphics2D, а затем вы можете нарисовать объекты Rectangle2D, вызвав draw(myRectangle)
и залейте их другим цветом, установив цвет графика до рисования, а затем вызовите fill(myRectangle)
и добавьте разные actionListeners для каждого прямоугольника.
Опять же, я бы использовал один MouseListener, добавленный в JPanel. Вы можете узнать, какой Rectangle2D был нажат, позвонив contains(Point p)
с Точкой, данной вам в MouseListener mousePressed, методы MouseEvent объект.
Подробнее об этом, проверьте:
Какой компонент я могу добавить в свою JPanel, что позволит мне достичь этого?
У JDK его нет, но вы можете проверить Игра с формами и, возможно, использовать ShapeComponent
Затем вы можете просто добавить MouseListener для каждого компонента.
Вы можете использовать JButtons в качестве прямоугольников. Это облегчает обработку действий.
http://docs.oracle.com/javase/tutorial/uiswing/components/button.html
Если вы хотите рекламировать разные actionListeners -> используйте JButtons. но вы должны изменить его мнение.
Все методы, которые вы можете использовать, находятся здесь: http://docs.oracle.com/javase/7/docs/api/javax/swing/AbstractButton.html и здесь http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html