views:

50

answers:

1

I have created an array Man:

public main blah blah{
man = man[10];
}

Man has fields such as

Man.name;
Man.age;
...

In Man class, there is a OnClick method that opens a new window showing its name and age.

public Man(){

    Onclick(){
        InfoWindow showinfo = new InfoWindow(this.getid()) // If this is Man[2] the id would be 2.

}

And in InfoWindow class:

public class InfoWindow extends JFrame{
    public InfoWindow(Man selectedMan){
        setSize(300, 200);
        JLabel info = new JLabel(selectedMan.getname());
        add(info);
        info.setVisible(true);
     }
}

Basically, that's wanna acomplish (show in pseudocode), pass a Man[i] into a class that when a window is created, shows the info related to that man. This is how i'm actualy trying to implement it but it's not working, i'm pretty sure there is a misconception from me in some part.

Any help?

Actual code:

***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.
}
+4  A: 

Try this:

InfoWindow manShowInfo = new InfoWindow(Man.this);

Because the event listener is itself an object instance, a plain this refers to the listener. Doing Man.this will extract the enclosing Man instance to pass into the InfoWindow.

Ash
+1 see http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.8.3
barrowc
Worked! This is when OOP gets complicated for newbies...
Gabriel A. Zorrilla