[英]How to add a GridLayout using NetBeans GUI Builder for Java Swing?
[英]Netbeans Swing GUI Builder not working with java-module project and Maven
我想将 Netbeans 的 Swing GUI 构建器与 Maven 项目和 java 模块一起使用。 如果将它们编译为 java 模块的一部分,则 GUI Builder 似乎找不到已编译的类。 它给出了错误“加载组件时出错(...)无法加载组件类(...)”(请参阅示例末尾屏幕截图中的整个错误)
我已经使用 Netbeans 11 将其固定为一个最小的示例:
File > New Project > Java with Maven > Java Application(使用默认建议并单击完成)
在“Source Packages”下的项目树中,右键单击并添加一个新的 JFrame 和一个 JPanel。
编译项目(运行 > 构建项目),以便您可以在 GUI Builder 中使用这些类
使用 GUI Builder,通过在设计模式下打开 JFrame 并将 JPanel 拖到 JFrame,将 JPanel 的实例添加到 JFrame。
通过添加文件src/main/java/module-info.java
将项目更新为使用 java 模块:
module MavenGuiTest {
requires java.desktop;
requires java.logging;
}
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
</plugin>
</plugins>
</build>
再次运行“构建项目”。 现在项目编译完成。
如果 JFrame 在编辑器中打开,请关闭它。
点击Show Exceptions时,可以看到GUI Builder找不到JPanel的编译类:
以下是完整的异常文本:
java.lang.ClassNotFoundException: com.mycompany.mavenproject1.NewJPanel
at org.netbeans.modules.form.project.ProjectClassLoader.findClass(ProjectClassLoader.java:163)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at org.netbeans.modules.form.project.FormClassLoader.findClass(FormClassLoader.java:58)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at org.netbeans.modules.form.project.ClassPathUtils.loadClass(ClassPathUtils.java:89)
at org.netbeans.modules.form.FormUtils.loadClass(FormUtils.java:1552)
at org.netbeans.modules.form.PersistenceObjectRegistry.loadClass(PersistenceObjectRegistry.java:73)
at org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:673)
at org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:949)
at org.netbeans.modules.form.GandalfPersistenceManager.loadForm(GandalfPersistenceManager.java:484)
at org.netbeans.modules.form.GandalfPersistenceManager.loadForm(GandalfPersistenceManager.java:260)
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$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:85)
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)
我不知道如何修复它,我也没有找到任何解决方法。
这只是警告而不是错误。 即使发生这种情况,您也可以运行此项目。 此警告显示何时发生这些事情。
netbeans
并重新打开它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.