2016-03-17 1 views
0

У меня есть несколько JLabels, и все они имеют общий MouseListener(). Теперь на MouseClicked() даже я хочу проверить, отличается ли текущий JLabel от предыдущего и только от предыдущего, как это сделать? Я знаю, что могу просто сделать что-то вроде «if (e.getSource()! = From label_1)», но так как метки не будут обрабатываться, но вновь создаются каждый раз из другого класса, мне нужен метод проверки, который не основанный на известных переменных, но фактически проверяет, отличается ли текущий источник от предыдущего. Это метод mouseClickedJAVA: Как проверить, отличается ли выбранный элемент от предыдущего щелчка?

public void mouseClicked(MouseEvent e) { 
    mapPanel = new JPanel(); 
    JLabel temp = (JLabel) e.getSource(); 

    if (!clicked) { 

     mapPanel.setSize(new Dimension(500, 500)); 
     setSize(new Dimension(500, 650)); 
     add(mapPanel); 
     System.out.println(clicked); 
     clicked = true; 
     temp.removeMouseListener(this); 
     mapPanel.setBackground(Color.RED); 
    } 
    // if(temp.pr) 
    else { 
     System.out.println(clicked); 
     remove(mapPanel); 
     temp.addMouseListener(this); 
     setSize(new Dimension(500, 150)); 
     mapPanel.setBackground(Color.BLUE); 
     clicked = false; 
    } 
} 
+4

Сохраните предыдущий источник в переменной и сравните 'e.getSource()' с этим. Затем сохраните 'e.getSource()' в одну и ту же переменную, чтобы подготовиться к следующему клику. –

+0

Спасибо, это сработало. Довольно умный округлый. –

ответ

0

Ну, так как мой комментарий решить вашу проблему, я повторно разместить его здесь в качестве ответа. ☺

Сохраните предыдущий источник в поле и сравните e.getSource() с этим. Затем сохраните e.getSource() в ту же переменную, чтобы подготовиться к следующему щелчку.

Смежные вопросы