Granny's Programming Pearls
"inside of every large program is a small program struggling to get out"
The moose likes Swing / AWT / SWT and the fly likes Disabling a JPanel and all it's components Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Swing / AWT / SWT
Bookmark "Disabling a JPanel and all it Watch "Disabling a JPanel and all it New topic

Disabling a JPanel and all it's components

Tanveer Rameez
Ranch Hand

Joined: Dec 11, 2000
Posts: 158
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:
mycheckbox.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent ae)
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?

Author of JPhotoBrush Pro (
Gregg Bolinger
GenRocket Founder
Ranch Hand

Joined: Jul 11, 2001
Posts: 15302

Ok, here is what to do.

Happy Coding,
Gregg Bolinger

GenRocket - Experts at Building Test Data
Tanveer Rameez
Ranch Hand

Joined: Dec 11, 2000
Posts: 158
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.
Adam Scheller
Ranch Hand

Joined: Feb 21, 2015
Posts: 173

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:

Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0
Rob Camick
Ranch Hand

Joined: Jun 13, 2009
Posts: 2451
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.
I agree. Here's the link:
subject: Disabling a JPanel and all it's components
It's not a secret anymore!