请看代码:for(h = 1;h < 15;h++){
scanDocContentPane[h].addMouseListener(new MouseListener(){//panel数组
public void mouseClicked(MouseEvent e) {
System.out.println("ASDS"+h);
TeleAScanPopFrame popFrame = new TeleAScanPopFrame();
popFrame.showPopFrame(scanDocContentPane[h].getImagePath());//这两句可以暂时不管,当做一个操作就行了
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
});
}
两个问题:1,当点击第四个Panel也就是scanDocContentPane[4]时,控制台输出ASDS15,并不是输出ASDS4,为什么?如何解决,2,为什么一定要写这些@Override语句
scanDocContentPane[h].addMouseListener(new MouseListener(){//panel数组
public void mouseClicked(MouseEvent e) {
System.out.println("ASDS"+h);
TeleAScanPopFrame popFrame = new TeleAScanPopFrame();
popFrame.showPopFrame(scanDocContentPane[h].getImagePath());//这两句可以暂时不管,当做一个操作就行了
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
});
}
两个问题:1,当点击第四个Panel也就是scanDocContentPane[4]时,控制台输出ASDS15,并不是输出ASDS4,为什么?如何解决,2,为什么一定要写这些@Override语句
如果你的方法体和父类的不一样,会报错.可以防止重写时写错.
for(h = 1;h < scanDocContentPane.length;h++){
scanDocContentPane[h].addMouseListener(new ScanDocPaneListener());
}class ScanDocPaneListener implements MouseListener{
public void mouseClicked(MouseEvent e) {
for(h = 1;h < scanDocContentPane.length;h++){
if(scanDocContentPane[h].isFocusOwner()){
System.out.println("Panel-"+h+"-onclick");
}
}
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
}
然后这回连反应都没有,这是为什么?
点击-调监听-执行print语句-输出“ASDS"+h,也就是h值是运行时才定的。
你肯定把h做成了static放在外头了,h那个时候已经成15了,它运行当然输出15了。
你可以给panel设个id嘛,直接输出对应id就好了