File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Swing / AWT / SWT / JFace and the fly likes Dynamically adding components and accessing them afterwards. Big Moose Saloon
  Search | Java FAQ | Recent Topics
Register / Login
JavaRanch » Java Forums » Java » Swing / AWT / SWT / JFace
Reply Bookmark "Dynamically adding components and accessing them afterwards." Watch "Dynamically adding components and accessing them afterwards." New topic
Author

Dynamically adding components and accessing them afterwards.

Kristjan Toots
Ranch Hand

Joined: Jun 03, 2011
Posts: 57

Hello.
I'm trying to create simple swing application by using MVC pattern. I had it all figured out until stumbled upon problem where I had to add another panels dynamically on runtime.

I've created frame where I applied BoxLayout aligned to Y-axis. In that layout I have two different panels. First one of them I use to collect data from 2 JTextfields and second one to display something else in JTable.



Now let's say that until certain condition is met every time when user submits (click's the button) I add dynamically another JPanel identical to the first one except the button.



So far I have defined components private and used getter/setters in Controller class and it makes everything even more confusing.

What I can't figure out is how I dynamically add another JPanels and still be able to access those JTextfield values.

Thank you.


Please correct my english.
Paul Clapham
Bartender

Joined: Oct 14, 2005
Posts: 13842

It looks like you already know how to add the new component. To access a JTextField inside that component, you need a reference to it. So when you create the JTextField, assign it to a variable. Then you can use that variable to access the JTextField.

(This has nothing really to do with Swing. It's a basic principle of any object-oriented language: if you want to work with an object, you need a reference to it.)
Kristjan Toots
Ranch Hand

Joined: Jun 03, 2011
Posts: 57

Thank you for your response Paul.
I am able to access JTextFields when I am dealing with single component. I'd do something like this. .



But when I have to add more components dynamically it gets tricky for me. I'll try to make an simple analog example. I'll use code found in stackoverflow.

The analog of the problem is that when I have dynamically added 5 JLabels saying "Bla". How would I approach when I need to say to the third JLabel object .setText("Changing third JLabel text");


Paul Clapham
Bartender

Joined: Oct 14, 2005
Posts: 13842

From the programming point of view, you just keep all of those references in a List or something like that. However you really ought to have a design first.
Randall Twede
Ranch Hand

Joined: Oct 21, 2000
Posts: 3905
add them to an ArrayList or similar


I never took notes in college. That's how I got a 4.0 the first 2 years, and a 3.5 the second two years.
 
 
subject: Dynamically adding components and accessing them afterwards.
 
Threads others viewed
Layout Managers
Swing- dynamic generation of panels
DisplayTag Probelm.
one component .. multiple panels
JFrame vs JPanel
WebSphere development made easy
without the weight of IBM tools
http://www.myeclipseide.com