我创建了一个数组Man:
public main blah blah{ man = man[10]; }
Man有
等字段Man.name; Man.age; ...
在Man类中,有一个OnClick方法可以打开一个显示其名称和年龄的新窗口。
public Man(){ Onclick(){ InfoWindow showinfo = new InfoWindow(this.getid()) // If this is Man[2] the id would be 2. }
在InfoWindow类中:
public class InfoWindow extends JFrame{ public InfoWindow(Man selectedMan){ setSize(300, 200); JLabel info = new JLabel(selectedMan.getname()); add(info); info.setVisible(true); } }
基本上,这是想要完成(以伪代码显示),将Man [i]传递给一个类,当创建窗口时,显示与该人相关的信息。这就是我实际尝试实现它的方法,但它不起作用,我很确定在某些方面我有误解。
任何帮助?
实际代码:
***MAN CLASS*** private class MouseListenerHandler extends MouseAdapter { public void mousePressed(MouseEvent e) { InfoWindow manShowInfo = new InfoWindow(this); Not Working. Getting "constructor not defined" unitShowInfo.setVisible(true); } } *InfoWindow class* public class InfoWindow extends JFrame { public InfoWindow(Man selectedMan){ setSize(300, 200); JLabel label = new JLabel(selectedMan.getName()); add(label); label.setVisible(true); } And the Man[] is created in the main class. }
答案 0 :(得分:4)
试试这个:
InfoWindow manShowInfo = new InfoWindow(Man.this);
因为事件监听器本身就是一个对象实例,所以普通的this
引用了监听器。执行Man.this
会提取封闭的Man
个实例以传递到InfoWindow
。