Как использовать изображение в JRadioButtons вместо текста

У меня есть группа JRadioButtons. Я хочу использовать изображение вместо текста в моем файле JRadioButtons. Поэтому я считаю, что мне придется использовать это:

JRadioButton(Icon icon, boolean selected)

Теперь проблема в том, что я не уверен, как создать этот значок. У меня есть изображение, которое я хочу использовать, и я скопировал его в папку с исходным кодом. Он в формате .tiff. я хочу прочитать это изображение .tiff (я полагаю, inputStream) и преобразовать его в значок, чтобы я мог иметь свои JRadioButtons.

Пожалуйста, помогите в реализации этого.

Заранее спасибо.


person Sahil Chaudhary    schedule 29.12.2012    source источник
comment
Посмотрите на ImageIcon API. Используйте конструктор, который принимает изображение.   -  person Hovercraft Full Of Eels    schedule 29.12.2012
comment
Вы можете нарисовать значок, см. docs.oracle .com/javase/6/docs/api/javax/swing/Icon.html   -  person ridoy    schedule 29.12.2012
comment
я не хочу его рисовать, я хочу использовать изображение, которое у меня есть в исходной папке. Я пытался использовать этот конструктор: ImageIcon (строковое имя файла), но он не работает.   -  person Sahil Chaudhary    schedule 29.12.2012


Ответы (2)


Предполагая, что вы поместили изображение в свою исходную папку, в пакет com.foo.bar, и что ваш процесс сборки копирует этот файл с вашими классами, чтобы он находился в пути к классам при запуске приложения (это то, что все IDE делают по умолчанию), вы можете просто использовать

new ImageIcon(MyClass.class.getResource("/com/foo/bar/MyImage.png"))

чтобы получить значок.

Я не уверен, что Java имеет встроенную поддержку формата tiff, поэтому вам, возможно, придется преобразовать изображение в другой поддерживаемый формат, чтобы загрузить его (gif, JPEG и PNG будут работать нормально).

person JB Nizet    schedule 29.12.2012
comment
вместо /com/foo/bar/MyImage.png я поместил каталог jpeg (не tiff) в свою папку src. Это не сработало, когда я запустил его. Также я не понимаю, как я буду читать свое изображение, когда я помещаю свой java-апплет на сервер, местоположение изменится правильно. - person Sahil Chaudhary; 29.12.2012
comment
программа выдает java.lang.NullPointerException, что это значит? - person Sahil Chaudhary; 29.12.2012
comment
Если это корень, тогда путь будет /MyImage.jpg. И нет, это не изменится в апплете. Пока изображение находится в пути к классам, оно будет загружено таким образом. Я не могу сказать, что означает NPE, не видя вызывающий его код и его трассировку стека. - person JB Nizet; 30.12.2012
comment
это работает, я ошибался. но теперь, когда я использую этот конструктор: JRadioButton (значок значка, выбрано логическое значение), но он заменяет не текст, а саму кнопку, idk, если вы понимаете, что я говорю - person Sahil Chaudhary; 30.12.2012

Если вы получаете NullPointerException, это, вероятно, означает, что изображение находится не по указанному вами пути.

Вы сказали, что вставили его прямо в папку src, так что это должно работать:

new ImageIcon(getClass().getResource("icon.jpg"))
person aly    schedule 29.12.2012
comment
оно работает! можешь еще объяснить как? зачем нам нужен getClass()? - person Sahil Chaudhary; 30.12.2012
comment
И MyClass.class.getResource(), и getClass().getResource() должны работать (я только что проверил, чтобы подтвердить). Я не уверен, что это отвечает на ваш вопрос о том, как? - person aly; 30.12.2012
comment
да, теперь это работает, я сделал глупую ошибку, изображения были в папке проекта, но не в src. - person Sahil Chaudhary; 30.12.2012
comment
Что ж, я рад, что вы исправили это! - person aly; 30.12.2012