swing代码显示方式
显示为java代码:
File -> settings -> GUI designer,Generate GUI into : Java source code
直接以class形式插入到文件中:
File -> settings -> GUI designer,Generate GUI into : Binary class files
局部/全局
在File -> settings 中设置的是当前project的,在File -> other settings -> default setting中设置的是全局变量。无论是局部还是全局设置,都需要再编译一次才会显示/隐藏swing代码。
构造顺序
通过java代码格式下进行单步调试可以得出结论:在进入构造函数的第一步,就会生成各个控件,例如下述代码中,在第一局globalProperties = inputGlobalProperties;执行之前,各个控件就已经生成了。
public MainForm(GlobalProperties inputGlobalProperties, SettingForm inputSettingForm) {
globalProperties = inputGlobalProperties; //1
settingForm = inputSettingForm;
frame = new JFrame("");
this.propertiesFilePath = globalProperties.getPropertiesFilePath();
this.iconPath = globalProperties.getIconPath();
this.startManualImport = globalProperties.getStartManualImport();
}
用IDEA自带的生成jar方式不会出现错误
MAVEN编译或生成的JAR包运行错误
原因
由于这些控件是由idea生成的,因此
1.当控件使用class文件方式创建时,需要用idea自带的生成jar方法才能将控件生成,若直接用maven编译不会报错,但当生成jar时,会由于没有将控件对应的class文件编写的普通的class文件中导致错误,如jar运行时提示找不到控件,或控件为null等;
2.当控件使用java代码方式生成时,需要引入相应的idea的jar包,若未引入则maven编译报错。
解决方案
可以参考https://stackoverflow.com/questions/19049253/intellij-idea-gui-designer-maven,目前使用的方式是
1.首先将控件以java形式写入到源码中;
2在pom.xml中加入依赖:
<dependency>
<groupId>com.intellij</groupId>
<artifactId>forms_rt</artifactId>
<version>7.0.3</version>
</dependency>