Re: need help on this.
On 4/30/2013 9:18 AM, wee wrote:
i have this code:
public class ArrayUI extends JFrame {
public JPanel pane = new JPanel();
public JTextField[] item = new JTextField[20];
public ArrayUI() {
super("title");
FlowLayout fl = new FlowLayout();
setLayout(fl);
Handler handle = new Handler();
for (int i = 0; i < item.length; i++) {
item[i] = new JTextField(("Text here " + i), 10);
item[i].addMouseListener(handle);
pane.add(item[i]);
}
add(pane);
pack();
}
private class Handler extends MouseAdapter {
public void mouseClicked(MouseEvent e){
}
// i want to get the index of the array (item[]) of the JTextField
// object that received the mouseClicked action.
// any idea how i can do that?
// using the getSource() method returns the object itself,
// not the index of the array. help please..
Get the source object, then walk through the array, index
by index, until you find it.
My question, though: Why do you want the array index? If
the answer is "Because there are other arrays with associated
information, and I need the index to access it," there may be
better approaches. Here are a few:
- You might store the extra information directly on the
JTextField object, possibly with setName() -- or maybe
with setAction(), if that's more appropriate.
- If none of the JTextField's attributes seem a suitable
home for what you want to store, write a WeeTextField
class that extends JTextField and just carries the
extra information around. Note that you needn't write
much code; all the real work happens in the JTextField
superclass, and you just deal with the "decorations."
- Put the extra information in the Handler class, and use
a separate Handler instance for each JTextField instead
of making them all share the same instance.
}
}
--
Eric Sosman
esosman@comcast-dot-net.invalid