Java IntelliJ拒绝添加自定义组件
我的问题如下:假设我们有以下文件:Java IntelliJ拒绝添加自定义组件,java,swing,intellij-idea,Java,Swing,Intellij Idea,我的问题如下:假设我们有以下文件: p包; 导入javax.swing.*; 公共类测试扩展了JPanel{ 测试(){ 超级(真); } } 我保存文件并编译它。现在,在IntelliJ中,我打开一个表单并尝试向其中添加test。这行不通!我单击“非调色板组件”,单击我的表单,在打开的对话框中,我键入p.test作为我的类名(IntelliJ甚至在这里提供名称完成),并选中“自动创建绑定”。单击“确定”后,什么也没有发生。但是-如果我用“javax.swing.JButton”作为类名,它就
p包;
导入javax.swing.*;
公共类测试扩展了JPanel{
测试(){
超级(真);
}
}
我保存文件并编译它。现在,在IntelliJ中,我打开一个表单并尝试向其中添加
test
。这行不通!我单击“非调色板组件”,单击我的表单,在打开的对话框中,我键入p.test
作为我的类名(IntelliJ甚至在这里提供名称完成),并选中“自动创建绑定”。单击“确定”后,什么也没有发生。但是-如果我用“javax.swing.JButton”作为类名,它就可以工作了。这太可笑了。我不知道我做错了什么?测试是否必须实现或覆盖某个功能?我必须修改路径吗?还是我应该把我的电脑踢出我的窗口?你运行的是IntelliJ IDEA的最新版本吗?您描述的操作在11.1.5和12.0.2(IDEA 11和12的最新版本)中对我有效。早期版本中可能存在错误。另外,由于test
是一个“JPanel”,您是否在“addnon=palete组件”上选择“is Container”选项。对于您显示的简单示例,如果未选中此选项,则当在“UI设计器”工具窗口中未选中此选项时,我无法在GUI设计器中看到任何内容。但是您提到,您甚至在控件层次结构中都看不到它
如果您使用的是最新版本,我建议您检查日志(帮助>显示日志),查看其中是否存在错误,这可能会对问题有所帮助
最后,您可以尝试使缓存无效并重新启动。(文件>使缓存无效)。有可能是某些腐败导致了问题
我本想在你的问题上加上这句话作为评论,但我没有足够的声望来这样做
java.lang.UnsupportedClassVersionError:Test:不支持的主版本。次版本51.0
问题是您将项目语言级别设置为1.7,并使用JDK1.7构建它。IntelliJ IDEA在您的系统上以JDK 1.6运行,无法加载使用1.7语言级别编译的自定义组件类
此问题的可能解决方案:
- 将项目/模块JDK更改为1.6
- 在IDEA 12中,可以将其设置为1.6
- 在附加命令行参数字段中指定以下选项:
-source 1.6-target 1.6
- (适用于Windows和Linux,不建议在Mac上使用)
重新加载自定义组件
按钮。这就解决了我的问题。+1,因为投反对票的理由如此充分,对我来说,这个问题看起来真实可信。顺便说一句,super(true)
是多余的。IntelliJ是否需要自定义组件的无参数构造函数?您是否尝试过重写,并让它返回一些维度对象,如返回新维度(300300)
,可能是添加了您的测试类,但如果未提供大小,则某些布局将倾向于返回0,0
作为JPanel
的大小。试着这样做,也许会奏效。首先-谢谢你的评论和@GagandeepBali:谢谢你的投票!我尝试了你的想法,但IntelliJ仍然没有显示我的“测试”类。有趣的是,它甚至没有添加到控件层次结构中,在该层次结构中显示窗体的所有控件。@trashgod:使用无参数构造函数更容易,因为我不必提供自定义初始化。但我借用了arg构造函数的思想,迫使IntelliJ要求我进行自定义初始化。不幸的是,它甚至没有这样做。我没有成功地使缓存失效(日志的想法很好,但对我没有帮助。也许你可以告诉我,发生了什么:日志上说:废话..java.lang.UnsupportedClassVersionError:Test:Unsupported major.minor version 51.0在java.lang.ClassLoader.defineClass1(本机方法)废话..[89423]错误-com.intellij.ide.IdeEventQueue-最后一个操作:EditorEscape我的JDK是1.6.031。我会尝试升级它,并告诉你它是否工作。除此之外,我不知道是什么原因导致了错误。好吧,就是这样。看到intellij还没有从1.7运行,我有点不高兴。无论如何,感谢您提供的详细和有用的答案!