user1305495
user1305495

Reputation: 41

Retrieve object from a Java Swing component

I've been working on a Java Swing project where I need to retrieve the object/instance that created a panel in order to call a simple save method particular to that instance.

You have a JFrame with a JTabbedPane that has tabs created by instancing a class which builds a JPanel and adds it to the JTabbedPane, I need to find the specific instance from the selected JPanel/tab on the JTabbedPane to then call it's save method.

Any ideas? Thanks for your time!

public class frame extends JFrame implements ActionListener{
 Builds a frame dubbed "frame" that is static.
 Builds a static JTabbedPane dubbed "pane"and adds it to the frame.
 Creates a button that creates a new instance of sheet.

 public void actionPerformed(MAGIC!){
  See if a button on the panel has been pressed and uses the currently selected tab to locate the correct instance of sheet to run it's save method.
 }
}

public class sheet extends JPanel{
 In constructor makes a JPanel and adds it to "pane"

 Describes a save method that outputs a variable unique to the instance.
}

Upvotes: 3

Views: 469

Answers (3)

user1305495
user1305495

Reputation: 41

I figured out all I needed to do was store new tab objects in an ArrayList derp. Thanks for your attempts though guys!

Upvotes: 1

Ashwinee K Jha
Ashwinee K Jha

Reputation: 9307

You can add a field in the new JPanels that point to the instance of the creator. I don't think there is any such method to point back to parent class in the API.

--EDIT-- You may want to check http://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html getSelectedIndex() may be what you are looking for.

Upvotes: 0

ControlAltDel
ControlAltDel

Reputation: 35011

Rather than just connecting back to the original creator, my approach to this was to create / use an interface that expicitly supports saving. I created something for this in TUS, my sourceforge project

http://tus.svn.sourceforge.net/viewvc/tus/tjacobs/io/filepersist/

Check out Persistable and Persistable2. Of course anything can be a Persistable, but the abstraction let's you get away from explicit ties back to the creator class

Upvotes: 0

Related Questions