Java Swing Проблема

У меня есть доска с карточками, в которых я должен найти спички. У меня есть две переменные buttonA и buttonB для отслеживания нажатых квадратов.

Когда они равны, я могу удалить их с доски, просто добавив этот код:

cards[buttonA].setVisible(false);
cards[buttonB].setVisible(false);

Как я могу разместить одно и то же изображение на всех кнопках после поиска совпадений? Я пробовал следующее, но вместо смены изображения просто оставляет одно и то же изображение на кнопках.

cards[buttonA].setIcon(new ImageIcon("myPic.png");

person Community    schedule 09.03.2009    source источник


Ответы (2)


Вероятно, вам нужно использовать:

new ImageIcon(getClass().getResource("/path/to/myPic.png"));

Где этот ресурс находится на classpath. (Помните, что при использовании IDE вам необходимо убедиться, что ваши ресурсы PNG копируются в выходной каталог. Например, в IDEA это достигается в меню настроек компилятора)

изменить: я никак не могу вспомнить, начинается ли путь с / или нет.

person oxbow_lakes    schedule 09.03.2009
comment
Он начинается с косой черты, если вы хотите, чтобы он был абсолютным в пути к классам, и не начинается с косой черты, если вы хотите, чтобы он относился к классу. - person Joachim Sauer; 10.03.2009
comment
Я попробовал это, но у меня не получилось... Я заметил, что это заставило изображение немного сместиться вниз... но это не изменило его. - person ; 10.03.2009
comment
Тогда общая проблема заключается в том, что (если вы используете IDE) файл png не копируется в вашу область вывода (или классов или корзины). то есть это только в исходном каталоге. Это может быть параметр сборки IDE - в IDEA он находится в НАСТРОЙКАХ компилятора. - person oxbow_lakes; 10.03.2009

У вас может быть ссылка на ImageIcon, если вы хотите поделиться им с кнопками (вместо того, чтобы загружать его каждый раз). Для меня ваш код должен работать. Возможно, вы можете удалить текущий значок (используя setIcon(null)), а затем установить его.

person amit    schedule 10.03.2009
comment
Вам не нужно сначала удалять другой значок. PNG-файл Тони совершенно очевидно не находится в его пути к классам. - person oxbow_lakes; 10.03.2009