Включение графики / фигур в мой графический интерфейс 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

Другие вопросы по тегам