我在某些坐标上的JFrame上有一个JLabel(比如label1),然后我有另一个JLabel(比如label2),它正好放在label1的顶部(即它与label1的原点和大小完全相同)。 / p>
我已注册这两个标签以接收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(在label2之前添加)。
我正在寻找一个解决方案,以便我的标签对象得到通知。
任何帮助都将受到高度赞赏。
答案 0 :(得分:3)
但是当我点击标签时,只会通知label1(在label2之前添加)。
Swing以与添加到面板相反的顺序绘制组件。因此标签2在标签1之前被绘制。这解释了为什么标签1得到了事件。
我正在寻找一个解决方案,以便我的标签对象得到通知。
将MouseListner添加到面板。然后,您需要遍历面板上的所有组件以查看该组件是否包含鼠标点。找到匹配项后,就可以进行处理了。
可能有更好的解决方案。你为什么需要这个?为什么使用null布局?