Java 在JPanel上单击鼠标时未检测到JLabel
我正在使用netbeans,我正在动态地将带有形状的标签添加到我的jpanel中。但是,我在面板中添加了一个鼠标侦听器,但它仅在鼠标未在jlabel上时检测操作?有没有一种方法可以在我的鼠标侦听器中包含jPanel中的jLabel,而不向每个单独的jLabel添加侦听器Java 在JPanel上单击鼠标时未检测到JLabel,java,swing,user-interface,mouse,Java,Swing,User Interface,Mouse,我正在使用netbeans,我正在动态地将带有形状的标签添加到我的jpanel中。但是,我在面板中添加了一个鼠标侦听器,但它仅在鼠标未在jlabel上时检测操作?有没有一种方法可以在我的鼠标侦听器中包含jPanel中的jLabel,而不向每个单独的jLabel添加侦听器 private void jPanel2MouseClicked(java.awt.event.MouseEvent evt) { for(int
private void jPanel2MouseClicked(java.awt.event.MouseEvent evt) {
for(int a = 0; a< states.size(); a++) {
if(states.get(a).contains(evt.getPoint())) {
if(states.get(a).getIcon() == rectangleIcon) {
if(yellow == true) {
states.get(a).setIcon(yellow2Icon);
yellow = false;
} else if (yellow != true){
states.get(a).setIcon(yellowIcon);
jPanel2.revalidate();
jPanel2.repaint();
yellow = true;
}
} else {
states.get(a).setIcon(rectangleIcon);
yellow = false;
}
x2 = evt.getPoint();
}
}
}
通过在函数内部的某个位置粘贴
打印
行,尝试确保该函数被调用。像这样:
private void jPanel2MouseClicked(java.awt.event.MouseEvent evt) {
System.out.println("this method was called");
for(int a = 0; a < states.size(); a++) {
if (states.get(a).contains(evt.getPoint())) {
if (states.get(a).getIcon() == rectangleIcon) {
if (yellow)
states.get(a).setIcon(yellow2Icon);
else {
states.get(a).setIcon(yellowIcon);
jPanel2.revalidate();
jPanel2.repaint();
}
yellow = !yellow;
} else {
states.get(a).setIcon(rectangleIcon);
yellow = false;
}
x2 = evt.getPoint();
}
}
}
private void jPanel2MouseClicked(java.awt.event.MouseEvent evt){
System.out.println(“调用此方法”);
对于(int a=0;a
JLabel不应该从底层JPanel窃取鼠标点击,除非JLabel还附带了鼠标侦听器——是吗?考虑创建和发布你的.WOW你是对的,当我第一次初始化它时,我写了一个鼠标器,而且我从来不知道WOW的感谢。
private void jPanel2MouseClicked(java.awt.event.MouseEvent evt) {
System.out.println("this method was called");
for(int a = 0; a < states.size(); a++) {
if (states.get(a).contains(evt.getPoint())) {
if (states.get(a).getIcon() == rectangleIcon) {
if (yellow)
states.get(a).setIcon(yellow2Icon);
else {
states.get(a).setIcon(yellowIcon);
jPanel2.revalidate();
jPanel2.repaint();
}
yellow = !yellow;
} else {
states.get(a).setIcon(rectangleIcon);
yellow = false;
}
x2 = evt.getPoint();
}
}
}