2009-03-09 5 views
0

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

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

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

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

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

ответ

2

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

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

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

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

+0

Он начинается с косой черты, если вы хотите, чтобы он был абсолютным в пути к классам и не начинался с косой черты, если вы хотите, чтобы он относился к классу. –

+0

Я пробовал, но я не работал ... Я заметил, что это немного изменило изображение ... но это не изменило его. – 2009-03-09 23:01:29

+0

Тогда общая проблема заключается в том, что (если вы используете IDE), файл png не копируется в вашу область вывода (или классов или bin). то есть только в исходном каталоге. Это может быть установка сборки IDE - в IDEA она находится под «компилятором». НАСТРОЙКИ –

0

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

+0

Вам не нужно сначала удалять другой значок. PNG-файл Tony, очевидно, не находится на его пути к классу –