2013-07-02 3 views
0

У меня есть JLabel (скажем, label1) на моем JFrame в определенных координатах, тогда у меня есть еще один JLabel (скажем, label2), который помещен точно поверх метки1 (т.е. он имеет точно такое же происхождение и размер, что и метка1).mouseClicked event в случае, когда JLabel помещается поверх другого JLabel

Я зарегистрировал обе эти метки для получения события mouseClicked.

label1 = new JLabel(); 
label1.setHorizontalAlignment(SwingConstants.CENTER); 
label1.setName("label1"); 
label1.addMouseListener(this); 
contentPane.add(label1); 
label1.setBounds(0, 0, 40, 40); 

label2 = new JLabel(); 
label2.setHorizontalAlignment(SwingConstants.CENTER); 
label2.setName("label2"); 
label2.addMouseListener(this); 
contentPane.add(label2); 
label2.setBounds(0, 0, 40, 40); 

Но когда я нажимаю на метку, уведомляется только label1 (которая была добавлена ​​перед меткой2).

Я ищу решение, чтобы оба объекта метки были уведомлены.

Любая помощь будет высоко оценена.

+0

Java GUI, возможно, придется работать на нескольких платформах, на разных разрешениях экрана и с использованием разных PLAF. Таким образом, они не способствуют точному размещению компонентов. Чтобы организовать компоненты для надежного графического интерфейса, вместо этого используйте диспетчеры макетов или их комбинации, а также макет и границы пробелов для пробелов. –

ответ

3

Но когда я нажимаю на метку, уведомляется только label1 (которая была добавлена ​​перед меткой2).

Swing красят компоненты в обратном порядке, чтобы они были добавлены к панели. Итак, ярлык 2 нарисован перед ярлыком 1. Это объясняет, почему ярлык 1 получает событие.

Я ищу решение, чтобы оба объекта метки были уведомлены.

Добавить MouseListner на панель. Затем вам нужно будет пропустить все компоненты на панели, чтобы увидеть, содержит ли компонент точку мыши. Когда вы найдете совпадение, вы делаете свою обработку.

Возможно, это лучшее решение. Зачем тебе это нужно? Почему вы используете пустой макет.

+0

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

+0

@ nachokk, я согласен, это звучит как плохой дизайн, поэтому я попросил разъяснить это требование. – camickr

+0

+1 для * Swing краски компонентов в обратном порядке, что они были добавлены в панель * .. –

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