Win a copy of Programmer's Guide to Java SE 8 Oracle Certified Associate (OCA) this week in the OCAJP forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Disabling a JPanel and all it's components

 
Tanveer Rameez
Ranch Hand
Posts: 158
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi
I am having a problem. Let me explain by simplifying the GUI to a simple frame in which I have a JCheckbox and a JPanel mypanel.
mypanel has a Textfield tf,JComboBox cmb as it's components.
So now if I deselect the JCheckbox, all the components in the mypanel should be disabled. I used a code like:
[code]
mycheckbox.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
if(mycheckbox.isSelected())
mypanel.setEnabled(true);
else
mypanel.setEnabled(false);
}
});
[code]
but the components inside the panels are not disabled. In my actual program I have a large number of different kinds of components in mypanel.So disabling/enabling each of them on each actionPerformed of the mycheckbox will be laborious. Isn't there any way by which I can disable/enable the mypanel to disable/enable all the components in it?
regards
Tanveer
 
Gregg Bolinger
Ranch Hand
Posts: 15304
6
Chrome IntelliJ IDE Mac OS X
  • Likes 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Ok, here is what to do.



------------------
Happy Coding,
Gregg Bolinger
 
Tanveer Rameez
Ranch Hand
Posts: 158
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
hi
thanks for the help. Gee, I forgot about that method. I should have looked at the APIs but that never crossed my mind.
thanks again.
Regards
Tanveer
 
Andrew Polansky
Ranch Hand
Posts: 310
18
Linux MS IE
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Forgive me for excavating this 14 years old thread, but I have some useful code that can help future Googlers. This thread is in top 5 for "disable all jpanel components" phrase.

The code provided by Gregg works fine, but it will not disable components in nested containers.

Here is a recursive method that extracts all the components from given container, including components in nested containers:



Later the components can be disabled this way:

 
Rob Camick
Ranch Hand
Posts: 2612
9
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Or you can check out Disabled Panel.

The approach is similar to the above solution excepts that it only disables components that are currently enabled and keeps track of these components in a List. When you enable the components, only components found in the List will be enabled.

It also provides a second approach where a GlassPane is used. In this case the actual components are not disabled but the glass pane intercepts all keyboard and mouse events and paints the panel as semi transparent to is acts disabled.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic