aspose file tools*
The moose likes Swing / AWT / SWT and the fly likes Dynamically adding components and accessing them afterwards. Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Swing / AWT / SWT
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: 59

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: 18135
    
    8

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: 59

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: 18135
    
    8

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: 4339
    
    2

add them to an ArrayList or similar


SCJP
Visit my download page
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Dynamically adding components and accessing them afterwards.
 
Similar Threads
Layout Managers
JFrame vs JPanel
DisplayTag Probelm.
Swing- dynamic generation of panels
one component .. multiple panels