Note that there are some explanatory texts on larger screens.

plurals
  1. POjcombobox as cell editor java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location
    primarykey
    data
    text
    <p>I am using a custom JComboBox as a cell editor in a JTable. When the users gets to the cell using keyboard controls it tries to open the popup. This causes the following error:</p> <pre><code>java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location at java.awt.Component.getLocationOnScreen_NoTreeLock(Component.java:1964) at java.awt.Component.getLocationOnScreen(Component.java:1938) at javax.swing.JPopupMenu.show(JPopupMenu.java:887) at javax.swing.plaf.basic.BasicComboPopup.show(BasicComboPopup.java:191) at javax.swing.plaf.basic.BasicComboBoxUI.setPopupVisible(BasicComboBoxUI.java:859) at javax.swing.JComboBox.setPopupVisible(JComboBox.java:796) </code></pre> <p>I have seen some articles stating that this is a known problem and the solution is to set:</p> <pre><code> comboBox.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); </code></pre> <p>This however does not help. What is this supposed to do anyways?</p> <p>All the threads and articles I have read about this are very vague about the nature of the problem. </p> <p>Does anyone have any insight into the nature of why this problem occurs? My combobox is very custom so it would help to understand the basis of the problem so I can fix the code.</p> <p>This is triggered on a focus gained event on the combo box which is captured and call setPopupVisible(true);</p> <pre><code> public void focusGained(java.awt.event.FocusEvent e) { //if focus is gained then make sure we show the popup if it is suppose to be visible setPopupVisible(true); //and highlight the selected text if any comboTextEditor.setCaretPosition(comboTextEditor.getText().length()); comboTextEditor.moveCaretPosition(0); } </code></pre> <p>By the way I get the same results in Java 1.7_40 as Java 1.6_45</p> <p>Full Stack Trace:</p> <pre><code>Exception in thread "AWT-EventQueue-1" java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location at java.awt.Component.getLocationOnScreen_NoTreeLock(Component.java:1964) at java.awt.Component.getLocationOnScreen(Component.java:1938) at javax.swing.JPopupMenu.show(JPopupMenu.java:887) at javax.swing.plaf.basic.BasicComboPopup.show(BasicComboPopup.java:191) at javax.swing.plaf.basic.BasicComboBoxUI.setPopupVisible(BasicComboBoxUI.java:859) at javax.swing.JComboBox.setPopupVisible(JComboBox.java:796) at com.mbs.generic.view.swing.combobox.AutoCompleteComboBox$1.focusGained(AutoCompleteComboBox.java:185) at java.awt.AWTEventMulticaster.focusGained(AWTEventMulticaster.java:203) at java.awt.Component.processFocusEvent(Component.java:6179) at java.awt.Component.processEvent(Component.java:6046) at java.awt.Container.processEvent(Container.java:2039) at java.awt.Component.dispatchEventImpl(Component.java:4653) at java.awt.Container.dispatchEventImpl(Container.java:2097) at java.awt.Component.dispatchEvent(Component.java:4481) at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1848) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:901) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:513) at java.awt.Component.dispatchEventImpl(Component.java:4525) at java.awt.Container.dispatchEventImpl(Container.java:2097) at java.awt.Component.dispatchEvent(Component.java:4481) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:648) at java.awt.EventQueue.access$000(EventQueue.java:84) at java.awt.EventQueue$1.run(EventQueue.java:607) at java.awt.EventQueue$1.run(EventQueue.java:605) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:621) at java.awt.EventQueue$2.run(EventQueue.java:619) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:618) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) </code></pre> <p>thanks</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload