# What type of Swing component? Schedule and User Mangement

**URL:** <https://forum.inductiveautomation.com/t/what-type-of-swing-component-schedule-and-user-mangement/46201>\
**Category:** Ignition\
**Tags:** ignition79, vision\
**Created:** [April 30, 2021, 1:48pm UTC](https://forum.inductiveautomation.com/t/what-type-of-swing-component-schedule-and-user-mangement/46201 "2021-04-30T13:48:01Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![dkhayes117](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dkhayes117/32/68344_2.png) [@dkhayes117](https://forum.inductiveautomation.com/u/dkhayes117)\
**Post date:** [April 30, 2021, 1:48pm UTC](https://forum.inductiveautomation.com/t/what-type-of-swing-component-schedule-and-user-mangement/46201/1 "2021-04-30T13:48:01Z")

</div>

@paul-griffith  
What type of component/key is the title bar on the user and schedule manager? I’m using the Java UIManager to change look and feel. Is there a way to inspect what type of java swing objects are in Ignition so I know which key to alter with UIManager?

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/c/5/c5053d434203c03a446ed91c7df3bd3ce58aa2b1.png)

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [April 30, 2021, 3:35pm UTC](https://forum.inductiveautomation.com/t/what-type-of-swing-component-schedule-and-user-mangement/46201/2 "2021-04-30T15:35:22Z")

</div>

It’s not an actual component, it’s a `JideTitledBorder` around the table.  
As for a generic answer to this question, look around the forum for a ‘recursive getComponents’ - every Swing component acts as a container of children - so you can continually walk down the tree for each complex Vision component and find the children it’s made out of.

---

<div class="post-metadata">

**Author:** ![dkhayes117](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dkhayes117/32/68344_2.png) [@dkhayes117](https://forum.inductiveautomation.com/u/dkhayes117)\
**Post date:** [May 5, 2021, 3:20pm UTC](https://forum.inductiveautomation.com/t/what-type-of-swing-component-schedule-and-user-mangement/46201/3 "2021-05-05T15:20:39Z")

</div>

I’m trying to change all project check boxes to use a different icon without much success. I’m also referencing to the solution you gave me for power tables [Icon won’t show in boolean column - Ignition - Inductive Automation Forum](http://forum.inductiveautomation.com/t/icon-wont-show-in-boolean-column/35944/8)

```auto
from javax.swing import BorderFactory, ImageIcon
cbIcon = ImageIcon("Builtin/icons/16/check2.png")
UIManager.put("CheckBox.icon",cbIcon)

```

```auto
if event.propertyName == 'selected':
	from javax.swing import JLabel, ImageIcon
	cbIcon = ImageIcon("Builtin/icons/16/check2.png")
	checkbox = event.source
	checkbox.setIcon(cbIcon)

```

I also tried altering the UIM key on toggle buttons but that didn’t work either

[PMICheckBox (ignition 7.9.5 API) (inductiveautomation.com)](http://files.inductiveautomation.com/sdk/javadoc/ignition79/795/com/inductiveautomation/factorypmi/application/components/PMICheckBox.html#paintChildren-java.awt.Graphics-)

What am I missing here?

---

<div class="post-metadata">

**Author:** ![dkhayes117](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dkhayes117/32/68344_2.png) [@dkhayes117](https://forum.inductiveautomation.com/u/dkhayes117)\
**Post date:** [May 5, 2021, 3:25pm UTC](https://forum.inductiveautomation.com/t/what-type-of-swing-component-schedule-and-user-mangement/46201/4 "2021-05-05T15:25:49Z")

</div>

Icon must not be what I need. When I print `getIcon()` on a checkbox component it is None.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [May 5, 2021, 4:20pm UTC](https://forum.inductiveautomation.com/t/what-type-of-swing-component-schedule-and-user-mangement/46201/5 "2021-05-05T16:20:37Z")

</div>

Checkboxes don’t use icons; they delegate to the look-and-feel for their implementation. See [`AbstractButton.getUI()`](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/AbstractButton.html#getUI()).

Swing UI is complicated and hard to theme; to some extent, this way lies madness (also, a whole lot of your work will be rendered moot whenever you upgrade to 8.X; the new LaF has its own set of supported UI manager keys and features)

---

<div class="post-metadata">

**Author:** ![dkhayes117](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dkhayes117/32/68344_2.png) [@dkhayes117](https://forum.inductiveautomation.com/u/dkhayes117)\
**Post date:** [May 5, 2021, 5:04pm UTC](https://forum.inductiveautomation.com/t/what-type-of-swing-component-schedule-and-user-mangement/46201/6 "2021-05-05T17:04:32Z")

</div>

Thanks, yeah I remember mention of v8 LaF support. I haven’t spent a lot of time on this, and the checkboxes are the last thing I need to tide me over until I can upgrade 🙂

---

<div class="post-metadata">

**Author:** ![dkhayes117](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dkhayes117/32/68344_2.png) [@dkhayes117](https://forum.inductiveautomation.com/u/dkhayes117)\
**Post date:** [May 5, 2021, 6:49pm UTC](https://forum.inductiveautomation.com/t/what-type-of-swing-component-schedule-and-user-mangement/46201/7 "2021-05-05T18:49:24Z")

</div>

Looks like I figured out what I needed without venturing into the CheckBoxUI for now. The method of using `IconPath`, `setClientProperty()` and `getClientProperty()` works for power tables, but the background color with JLabel is always white. To get around this I changed the columns to **not** booleans and editable to **off**. Then setup the `onMousePress()` extension to update the underlying dataset when the “boolean” column is pressed. Using the `configureCell()` extension, I override the text and iconPath attributes for boolean column.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/6/a/6a862aa5bbc8d4b657035e921e48646c0168f8e7.png)

---

<div class="post-metadata">

**Author:** ![dkhayes117](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dkhayes117/32/68344_2.png) [@dkhayes117](https://forum.inductiveautomation.com/u/dkhayes117)\
**Post date:** [May 20, 2021, 5:50pm UTC](https://forum.inductiveautomation.com/t/what-type-of-swing-component-schedule-and-user-mangement/46201/8 "2021-05-20T17:50:45Z")

</div>

I still can’t figure out the foreground color for member names in the Users \> Edit Role pane of the user management. This is the last thing I need to change. I’ve tried every text color method from [here](http://files.inductiveautomation.com/sdk/javadoc/ignition79/795/com/inductiveautomation/factorypmi/application/components/UserManagementPanel.html#setFont-java.awt.Font-)  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/6/2/62733ae3acb09616fcc08e82fb58147aca5e1f8f.png)

when I do

```auto
comps = event.source.parent.getComponent('User Management').getComponents()
for comp in comps:
	print comp.getComponents()

```

```auto
array(java.awt.Component) 

array(java.awt.Component, [com.inductiveautomation.ignition.client.util.gui.AntialiasLabel[,7,12,1250x19,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=Users,verticalAlignment=CENTER,verticalTextPosition=CENTER], com.inductiveautomation.ignition.client.util.gui.LinkButton[,1261,12,48x19,hidden,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=6,labelFor=,text=< back,verticalAlignment=CENTER,verticalTextPosition=CENTER], javax.swing.JButton[,1313,7,85x29,hidden,alignmentX=0.0,alignmentY=0.5,border=com.incors.plaf.alloy.ct@a9fa6d,flags=16777504,maximumSize=,minimumSize=,preferredSize=,defaultIcon=jar:file:/C:/Users/dhayes/.ignition/cache/resources/modules/fpmi/ __1032659268__ vision-client-9.9.16.jar/00000000684ED795/ __1032659268__ vision-client-9.9.16.jar!/images/check.png,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=3,left=14,bottom=3,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Save,defaultCapable=true]]) 

array(java.awt.Component, [com.inductiveautomation.factorypmi.application.components.UserManagementPanel$1[Users,0,0,1397x828,layout=com.jidesoft.swing.JideSplitPaneLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777217,maximumSize=,minimumSize=,preferredSize=]]) 

```

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [May 21, 2021, 9:00pm UTC](https://forum.inductiveautomation.com/t/what-type-of-swing-component-schedule-and-user-mangement/46201/9 "2021-05-21T21:00:54Z")

</div>

That’s a `JList`, if that helps.
