wood burning stoves
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


Win a copy of Head First Android this week in the Android forum!
JavaRanch » Java Forums » Java » Swing / AWT / SWT
Bookmark "Disabling a JPanel and all it Watch "Disabling a JPanel and all it New topic
Author

Disabling a JPanel and all it's components

Tanveer Rameez
Ranch Hand

Joined: Dec 11, 2000
Posts: 158
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


Author of JPhotoBrush Pro (www.jphotobrushpro.com)
Gregg Bolinger
GenRocket Founder
Ranch Hand

Joined: Jul 11, 2001
Posts: 15302
    
    6

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
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
Adam Scheller
Ranch Hand

Joined: Feb 21, 2015
Posts: 103
    
    3

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:



ZCE
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: 2351
    
    8
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.
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: Disabling a JPanel and all it's components
 
It's not a secret anymore!