Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java IntelliJ拒绝添加自定义组件_Java_Swing_Intellij Idea - Fatal编程技术网

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运行,我有点不高兴。无论如何,感谢您提供的详细和有用的答案!