Как сравнить Icon в Jlabel

  • Автор темы Tashka
  • Дата начала
T

Tashka

#1
Пишу игрушку “парные картинки”. Мне нужно сравнить Icon в jLabel, если они равны – скрыть их, если нет – закрыть при щелчке на другой jLabel (рубашкой кверху)
Пишу так:
private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) {
if (jLabel1.getIcon() == jLabel3.getIcon())
{jLabel3.setVisible(false);jLabel1.setVisible(false);}
Else
{jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("rose.jpg")));
jLabel3.setIcon(newjavax.swing.ImageIcon(getClass().getResource("rose.jpg")));}}//обратная сторона картинки
Они не сравниваются. Может кто-нибудь знает как их сравнить?
 
T

Tashka

#3
За ссылку конечно спасибо, там все на английском, времени нет разбираться. Сейчас у меня другая проблема:
если я сравниваю не Icon, а текст в jLabel, почему то условие после else никогда не выполняется, если кто-нибудь знает в чем дело, подскажите, пожалуйста. ;)
private void jLabel2MousePressed(java.awt.event.MouseEvent evt) {
jLabel2.setIcon(new javax.swing.ImageIcon(getClass().getResource("small2.jpg")));
javax.swing.Timer timer = new javax.swing.Timer( 2000, new ActionListener()
{
public void actionPerformed(ActionEvent ev)
{
if (jLabel2.getInputContext() == jLabel5.getInputContext())
{ jLabel2.setVisible(false);jLabel5.setVisible(false);}
else
{jLabel2.setIcon(new javax.swing.ImageIcon(getClass().getResource("rose.JPG")));
jLabel5.setIcon(new javax.swing.ImageIcon(getClass().getResource("rose.JPG")));
}
}
} );
timer.setRepeats(false);
timer.start();

}
 
T

Tashka

#5
Cо ссылкой разобралась, там тоже самое что в Netbeans в сплывающей подсказке выползает на equals, еще раз спасибо. Сейчас текст в jLabel сравнивается:
if ( jLabel1.getText().equals(jLabel3.getText()))
Вот только, как записать массив из jLabel, чтобы jLabel1 сравнивать не только с jLabel3 (у меня 16 jLabel), а с элементами массива.
 
J

jCoder

#6
Попробуй создать массив типа Object[], и заполнить его этими 16-ю элементами. А при сравнении элементов, я думаю это все будет происходить в цикле, будешь делать приведение типов и использовать всё тот же equals(). Это как один из вариантов.
Но лучше всего мне кажется будет воспользоваться коллекционным классом ArrayList. Создать объект этого типа заполнить его и поработать с ним.