Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Append a number in the end of a variable name in java

Suppose that I have a lot of variables defined in my code with names such as this

public javax.swing.JPanel BenderPanel1;
public javax.swing.JPanel BenderPanel2;
public javax.swing.JPanel BenderPanel3;
etc...

So their general type is like this: BenderPanel"NUMBER".

I want to access some of them and set their visibility with .setVisible(false); but the number of those panels which I want to access is user-defined on run time.

Is there any possible way through a library to append a number to the end of each variable in order to access it in a for loop, like this:

for (int i=1; i<=UserInput; i++)
{
     BenderPanel"i".setVisible(false); // Watch this "i" right there.
}

WITHOUT the need to add them on ArrayList first and do it with the obvious way?

like image 589
Theocharis K. Avatar asked Jan 18 '13 09:01

Theocharis K.


2 Answers

You can't create members dynamically in Java (you can access them dynamically via reflection, but there's no need for it here).

Rather than having

public javax.swing.JPanel BenderPanel1;
public javax.swing.JPanel BenderPanel2;
public javax.swing.JPanel BenderPanel3;

have

public javax.swing.JPanel[] BenderPanels;

or

public List<javax.swing.JPanel> BenderPanels;

Then you can loop through them with an enhanced for loop.

for (javax.swing.JPanel panel : BenderPanels) {
    // ...
}
like image 121
T.J. Crowder Avatar answered Nov 18 '22 17:11

T.J. Crowder


If you really do not want to store your objects in a data structure like e.g. an ArrayList, I would recommend to use the Reflection API.

Especially interesting for you should be the fields.

Btw: According to the Java Naming Conventions, variable names shouldn't start with capital letters.

like image 2
RoflcoptrException Avatar answered Nov 18 '22 17:11

RoflcoptrException