[ https://issues.apache.org/jira/browse/NETBEANS-633?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
will mason updated NETBEANS-633: -------------------------------- Attachment: swing_bundles.7z > GUI Builder fails to load sub-panel with NLS / Respource bundle > --------------------------------------------------------------- > > Key: NETBEANS-633 > URL: https://issues.apache.org/jira/browse/NETBEANS-633 > Project: NetBeans > Issue Type: Bug > Components: guibuilder - Binding, guibuilder - Natural Layout > Affects Versions: 8.2, 9.0 > Environment: Product Version: Apache NetBeans IDE Dev (Build > incubator-netbeans-release-205-on-20180202) > Java: 10; Java HotSpot(TM) 64-Bit Server VM 10+46 > Runtime: Java(TM) SE Runtime Environment 10+46 > System: Windows 10 version 10.0 running on amd64; Cp1252; en_AU (nb) > User directory: Z:\tmp\.other\user\netbeans\v09.00-beta\FourAbs > Cache directory: Z:\tmp\.other\cache\netbeans\FourAbs-09 > Reporter: will mason > Priority: Critical > Labels: GUI, MissingResourceException, Swing, > internationalization > Attachments: image-2018-04-10-10-32-31-818.png, swing_bundles.7z > > > h2. expected > * To be able to view and edit parent JPanel screen in Netbeans GUI Builder. > * This should be possible no matter what the sub-panels do > * If/when a resource is missing or unresolved some kind of place holder can > be used > h2. actual > * We have several GUI JPanel-s which act as containers for a "details" > screen, sub-panel layouts. > * In one of the sub-panels we introduced a resource bundle to display > options for check-boxes.. > * This details screen works as a sub-panel at run-time. > * This details screen works as in the GUI designer/builder fine. > * However whenever we load the parent panel, the container it fails with a > *{{MissingResourceException}}*. > !image-2018-04-10-10-32-31-818.png! > > * This is somewhat of a SHOW STOPPER as far as internationalisation goes for > reusable GUI components I'm afraid. > * The situation is quite mysterious as well since the Resource file is > found, loaded and displayed by the detail JPanel screen which is IN THE SAME > java Package at runtime and design time. > * The resource bundle itself is in the {{resources/bundles}} folder of > common library (Gradle directory layout) and is "fixed" so to speak at design > time. > * I believe there is some fundamental flaw here because you must have > parents able to load sub-components with or without any resource strings. > > h2. supporting information > {noformat} > --[ *stacktrace* ]-- > java.util.MissingResourceException: Can't find bundle for base name > bundles/SpaAssurancesText, locale en_AU > at > java.base/java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:2055) > at > java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1689) > at > java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1593) > at > java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1556) > at java.base/java.util.ResourceBundle.getBundle(ResourceBundle.java:857) > at > au.com.fourtel.fourabs.client.spas.JPanelSpaDetails.initComponents(JPanelSpaDetails.java:1608) > at > au.com.fourtel.fourabs.client.spas.JPanelSpaDetails.<init>(JPanelSpaDetails.java:148) > at > au.com.fourtel.fourabs.client.spas.JPanelSpaDetails.<init>(JPanelSpaDetails.java:141) > at > java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native > Method) > at > java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) > at > java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) > at > java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:488) > at java.base/java.lang.Class.newInstance(Class.java:560) > at > org.netbeans.modules.form.CreationFactory.createDefaultInstance(CreationFactory.java:155) > at > org.netbeans.modules.form.RADComponent.createBeanInstance(RADComponent.java:227) > at > org.netbeans.modules.form.RADComponent.initInstance(RADComponent.java:166) > at > org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:755) > at > org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:943) > at > org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:799) > at > org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:943) > at > org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:799) > at > org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:943) > at > org.netbeans.modules.form.GandalfPersistenceManager.loadForm(GandalfPersistenceManager.java:478) > at > org.netbeans.modules.form.GandalfPersistenceManager.loadForm(GandalfPersistenceManager.java:258) > at org.netbeans.modules.form.FormEditor$2.run(FormEditor.java:327) > at org.netbeans.modules.form.FormLAF$2.run(FormLAF.java:268) > at > org.netbeans.modules.openide.util.NbMutexEventProvider$Event.doEventAccess(NbMutexEventProvider.java:115) > at > org.netbeans.modules.openide.util.NbMutexEventProvider$Event.readAccess(NbMutexEventProvider.java:75) > at > org.netbeans.modules.openide.util.LazyMutexImplementation.readAccess(LazyMutexImplementation.java:71) > at org.openide.util.Mutex.readAccess(Mutex.java:225) > at > org.netbeans.modules.form.FormLAF.executeWithLookAndFeel(FormLAF.java:251) > at org.netbeans.modules.form.FormEditor.loadFormData(FormEditor.java:324) > at > org.netbeans.modules.nbform.FormEditorSupport.loadOpeningForm(FormEditorSupport.java:436) > at > org.netbeans.modules.nbform.FormDesignerTC.loadForm(FormDesignerTC.java:256) > at > org.netbeans.modules.nbform.FormDesignerTC.access$300(FormDesignerTC.java:64) > at > org.netbeans.modules.nbform.FormDesignerTC$PreLoadTask$1.run(FormDesignerTC.java:245) > at > java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313) > at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770) > at java.desktop/java.awt.EventQueue.access$600(EventQueue.java:97) > at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) > at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) > at java.base/java.security.AccessController.doPrivileged(Native Method) > at > java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) > at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740) > at > org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136) > at > java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) > at > java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) > at > java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) > at > java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) > at > java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) > at > java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) > java.io.IOException: Undefined component referenced in layout: > jPanelSpaDetails > at > org.netbeans.modules.form.layoutdesign.LayoutPersistenceManager.correctMissingName(LayoutPersistenceManager.java:712) > at > org.netbeans.modules.form.layoutdesign.LayoutPersistenceManager.loadLayout(LayoutPersistenceManager.java:388) > at > org.netbeans.modules.form.layoutdesign.LayoutPersistenceManager.loadContainer(LayoutPersistenceManager.java:354) > at > org.netbeans.modules.form.layoutdesign.LayoutModel.loadContainerLayout(LayoutModel.java:1206) > at > org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:973) > at > org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:799) > at > org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:943) > at > org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:799) > at > org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:943) > at > org.netbeans.modules.form.GandalfPersistenceManager.loadForm(GandalfPersistenceManager.java:478) > at > org.netbeans.modules.form.GandalfPersistenceManager.loadForm(GandalfPersistenceManager.java:258) > at org.netbeans.modules.form.FormEditor$2.run(FormEditor.java:327) > at org.netbeans.modules.form.FormLAF$2.run(FormLAF.java:268) > at > org.netbeans.modules.openide.util.NbMutexEventProvider$Event.doEventAccess(NbMutexEventProvider.java:115) > at > org.netbeans.modules.openide.util.NbMutexEventProvider$Event.readAccess(NbMutexEventProvider.java:75) > at > org.netbeans.modules.openide.util.LazyMutexImplementation.readAccess(LazyMutexImplementation.java:71) > at org.openide.util.Mutex.readAccess(Mutex.java:225) > at > org.netbeans.modules.form.FormLAF.executeWithLookAndFeel(FormLAF.java:251) > at org.netbeans.modules.form.FormEditor.loadFormData(FormEditor.java:324) > at > org.netbeans.modules.nbform.FormEditorSupport.loadOpeningForm(FormEditorSupport.java:436) > at > org.netbeans.modules.nbform.FormDesignerTC.loadForm(FormDesignerTC.java:256) > at > org.netbeans.modules.nbform.FormDesignerTC.access$300(FormDesignerTC.java:64) > at > org.netbeans.modules.nbform.FormDesignerTC$PreLoadTask$1.run(FormDesignerTC.java:245) > at > java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313) > at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770) > at java.desktop/java.awt.EventQueue.access$600(EventQueue.java:97) > at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) > at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) > at java.base/java.security.AccessController.doPrivileged(Native Method) > at > java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) > at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740) > at > org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136) > at > java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) > at > java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) > at > java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) > at > java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) > at > java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) > at > java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) > {noformat} -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists