|
IDEA的GUI开发模式与传统的开发模式可能不太一样,这与许多的IDE工具的传统做法相违背,这导致这一很好的特性不被人们了解。大家都喜欢象JBuilder那样,我们可以创建一个Frame程序,然后使用Designer去设计界面,最后去运行这个程序,看到设计的效果,事实上很多IDE工具也这么做,VB、VC、Delphi等。然而这一切好像在IDEA下就行不通,你没法去创建一个Frame,然后使用Designer去设计Frame,最后再去运行。能否让IDEA象其他IDE工具完成界面设计?下面我们就向大家介绍一下如何去做这件事情,而且还要做的更好。
IDEA的GUI设计器采用XML方式保存Swing组件的信息,最后由IDEA专有的编译器将Java源码和XML文件编译成最终的class文件,将组件和布局信息保存在class文件。在Swing的应用中我们通常会使用到Layout来管理Swing组件的布局,Swing的Layout的功能很强大,但是有时却非常麻烦,所以IDEA目前只提供一种布局管理方式:Grid,这和Table非常类似,但非常专业,你完全可以做出优秀的界面。
在进行创建JFrame和JPanel之前,我们要准备一些工作,其实也是IDEA中最常用的功能:File Template,我们需要一个创建JFrame和JPanel的模板,JFrame的模板内容如下:
package ${PACKAGE_NAME};
import javax.swing.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
#parse("File Header.java")
public class ${NAME} extends JFrame
{
private JPanel root; //the root component
public ${NAME} ()
{
getContentPane().add(root);
}
public static void main(String[] args)
{
${NAME} frame = new ${NAME} ();
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
frame.addWindowListener(new WindowAdapter()
{
public void windowClosed(WindowEvent e)
{
System.exit(0);
}
});
frame.pack();
frame.setVisible(true);
}
}
我们将JFrame的显示交给一个JPanel负责,名称为root,完成JFrame中内容的显示(主要是布局),而JFrame主要处理对相关事件的相应,提供相关的数据等,组件的布局和显示任务就全部交给root去做。
所有的事情准备好以后,我们只需根据模板创建一个新的JFrame,这里我们将其命名为LogonFrame,在创建完毕后,我们还需要创建一个GUI Form做为JFrame组件的管理者,命名为LogonFrame,这里Form的名称和Java类名称最好一样,在以后操作会有很多好处,如重构等。我们需要将GUI的LogonFrame.form和LogonFrame类进行绑定,接下来我们在GUI Designer进行设计,最后我们只需将GUI Form中的根元素和LogonFrame类的root属性进行绑定,如果有一些其他组件需要绑定,你可以使用IDEA的Intention Action机制自行添加。关于IDEA下的GUI设计,可以参考JetBrains的GUI 的Flash教程,链接如下:http://www.jetbrains.com/idea/training/ui_designer.html
|