2013-07-14 2 views
1

Мне жаль, что это, вероятно, слишком основательно, чтобы быть здесь, но это тема, с которой я боролся уже около месяца, и я не знаю, куда еще идти (насколько я знаю, нет «переполнения noob», lol).Java-графика как объект/класс

Я пытаюсь создать класс, который:

1. put an image on a window (a JFrame, JPanel or other container) 
2. be able to support keyboard and mouse listeners 
3. could have multiple instances in the same container 

Так или иначе, я перепробовал все обычные места - Google, YouTube, официальный сайт Java (извините забыл URL) и, конечно, здесь, на Stack Overflow, но не смогли найти ничего, даже отдаленно похожего на то, что я пытаюсь сделать.

Конечно, я также рассмотрел возможность, что, возможно, это невозможно сделать вообще. Кажется, что не существует какого-либо стандартного «JImage» или «JGraphic», который работает как JButton или JLabel, и по какой-либо причине графика требует совершенно другого списка (чрезвычайно вовлеченных) процессов и процедур. Например, в этом посте: How to "really" draw images in a Java app - мне потребовалось 60 строк кода и 2 класса, чтобы приблизиться. Этот проект не работал в конце, потому что по какой-то причине он позволил мне создать один экземпляр (даже если вы создали 2-4 в основном методе, он отобразил бы только последний, который вы сказали ему добавить).

Но в любом случае, предполагая, что я не пытаюсь «изобретать колесо» здесь, и это действительно возможно (на Java), есть ли у кого-нибудь идея о том, как (или, по крайней мере, знать лучший сайт изучить его)? К сожалению, большинство сайтов, которые я посещал, обычно предполагают, что вы знаете всю внутреннюю работу изображений (я знаю, что такое пиксель, но это все) - Буферы, Растары и т. Д. Все еще находятся вне меня). Было бы совершенно незабываемым, если бы существовал сайт, который объяснял бы его непростыми словами, если такой сайт существует. Заранее спасибо.

ответ

5

Просто используйте простой старый JLabel.

Что касается ваших требований:

поместить изображение в окне (в JFrame, JPanel или другой контейнер).

Вы можете указать JLabel ImageIcon изображения, представляющего интерес, и оно отобразит его. Затем его можно легко разместить в любом другом контейнере, таком как JPanel или JFrame.

быть в состоянии поддерживать клавиатуры и мыши слушателей

Любой компонент, который расширяет JComponent, такие как JLabel позволяет использовать MouseListener, MouseMotionListener и может прослушивать ввод с клавиатуры через привязок клавиш.

может иметь несколько экземпляров в одном контейнере

Вы можете добавить столько, сколько вы хотите, чтобы любой контейнер. Просто будьте внимательны и уважительны к используемым менеджерам макетов.

+0

Спасибо! Я не знал, что метки могут содержать изображения (я понял, что label = text/a String), но когда я посмотрел на ImageIcon, я заставил его работать за считанные секунды! Я просто потратил полдня, пытаясь понять это, так что это огромная помощь. :) – user2403876

+0

@ user2403876: Я рад, что это вам помогло. Удачи! –

Смежные вопросы