公司介绍 产品展示 业务支持 解决方案 文档资料
网站导航 访客留言 技术论坛
     
     
  产品资料
  业界动态
  JAVA技术


首  页 > 文档资料 > 产品资料  
 
  在IDEA下快速创建Swing应用

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

做到这里,我们需要运行我们的JFrame程序啦,打开LogonFrame代码,按下Ctrl+Shift+F9进行编译,IDEA会自动将Form和java源码进行集成编译。编译后,你只需按下Ctrl+Shift+F10运行程序即可,这时一个完整的Swing应用就呈现在你的面前啦。

下面你要做的事情就是响应各个组件的触发的事件,这个你只需在代码中实现就可以啦,这个非常容易。

如果你想图形化方式去设计JPanel,你同样需要创建一个JPanel的File Template,内容如下:


package ${PACKAGE_NAME};
import javax.swing.*;

#parse("File Header.java")
public class ${NAME} extends JPanel
{
private JPanel root;

public ${NAME}()
{
add(root);
}
}

你只需将界面设计交给root属性去负责,我们创建的JPanel主要负责的对事件处理、提供相关数据等。我们只需创建一个Form,完成和创建的JPanel的绑定,然后将Form的根元素和root属性进行绑定即可,通过这种方式我们可以快速创建JPanel。

总结:通过这种将GUI Form和相应的JFrame和JPanel结合起来,这样你的GUI设计就不会再陌生,完全和其他工具一样,而且利用IDEA的GUI Designer将更加方便,尤其再Layout管理方面。传统的GUI工具都会利用原生代码来显示界面,而IDEA却使用XML方式来描述界面,这种方式更合理,也更容易实现强大的功能。将GUI工具生成的代码隐藏起来,这样你只需关注你的逻辑代码即可,代码更加清爽,你的开发心情和效率都会很好。

资源:Flash演示文档,点此下载。