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

Тема в разделе "Java", создана пользователем Tashka, 3 июн 2009.

  1. Tashka

    Tashka Гость

    Пишу игрушку “парные картинки”. Мне нужно сравнить 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")));}}//обратная сторона картинки
    Они не сравниваются. Может кто-нибудь знает как их сравнить?
     
  2. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
  3. Tashka

    Tashka Гость

    За ссылку конечно спасибо, там все на английском, времени нет разбираться. Сейчас у меня другая проблема:
    если я сравниваю не 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();

    }
     
  4. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    потому что сравниваете не тект, а InputContext, экземляр которого шарится между всеми JLabel

    с сыслкой выше лучше разобраться, много времи сэкономите.
     
  5. Tashka

    Tashka Гость

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

    jCoder Гость

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

Поделиться этой страницей