java

位置:IT落伍者 >> java >> 浏览文章

如何设计出有GUI特色的“纯”JAVA程序


发布日期:2018年01月10日
 
如何设计出有GUI特色的“纯”JAVA程序

现在JAVA语言在世界上非常流行其应用涉及电子商务INTERNET网上数据库CGI及多媒体等各个方面月SUN公司宣布了最新版的JAVA SDK 为新世纪的JAVA奠定基础

JAVA是一种面向对象的程序设计语言(OOP)它是一种类C++的语言由于JAVA消除了C/C++麻烦的内存管理和一些复杂的构造如多继承等JAVA的应用要比C++容易得多况且JAVA的运行速度已与C++差不多(据美国有关部门测算)还有那跨软硬件平台和一次编译多次运行的机制怎能不让程序员心动呢?

JAVA运行有两种形式小程序(APPLET)和应用程序(APPLICATION)为了简化起见本文只对应用程序进行探讨小程序是在JAVA原程序经编译无误后嵌入到HTML后经IE或NC等浏览器使用的形式我们在后面将给出应用程序(APPLICATION)实例来

用过VC++VBDELPHI和POWERBUILDER的朋友都知道用这些软件设计GUI(GRAPHICS USER INTERFACE)图形界面非常容易只需用鼠标拖拽控件即可几乎不用写什么代码JAVA问世后也有许多着名大公司为JDK(JAVA以前的版本叫做JDKJAVA Developer Kit)开发了集成GUI开发环境软件如MICROSOFT的Visual J++Borland的JBuilder Symantec的Cafe Visual Cafe 等等虽然这些产品支持GUI界面开发程序较易但也明显存在着以下这些不足之处

) 其JAVA版本滞后于SUN公司的最新版本

) 带来兼容性问题由于各家开发自己的类库文件如MS用自己的WFC类库造成无法与事实上的JAVA标准SUN公司的JAVAJDK(SDK)和JFC(JAVA FOUNDATION CLASSES)相兼容产生难以跨越平台等缺点

) 控件文件庞大编译和运行较慢运行文件也较大

) 开发环境价高有些产品不能善始善终半路夭折使用户处于被动局面而SUN的JAVAJFC等均是免费提供的有SUN公司庞大的技术力量保证

由于上述原因现在在国际上已流行Pure JAVAJAVA技术也就是说只用SUN公司的JAVA JDK JFC(GUI类库类似AWT但有着比AWT更强大的功能又称为SWING既摇摆)来开发程序其实只要了解JAVA的编程原理及JDK和功能强大的JFC(SWING) 我们就可编写出具有专业水平的GUI界面的程序来

下面笔者以一个程序为例来介绍如何编写具有JAVA的程序该程序的关键语句都有解释

importjavaawt*;

importjavaawteventWindowAdapter;

importjavaawteventWindowEvent;

importcomsunjavaswing*;

publicclassmyGUIextendscomsunjavaswingJFrame{

//此处设置环境常量字体颜色等略去

comsunjavaswingJPanelMainPanel;

comsunjavaswingJPanelTopPanel;

comsunjavaswingJButtonClearButton;

comsunjavaswingJButtonSearchButton;

comsunjavaswingJTextFieldSearchText;

//构造器对setMenu()和setGUI()数椐和调用的初始化和实例化

publicmyGUI(){

super(IdealGUI);

addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){dispose();Systemexit();}});//创建窗口事件

setMenu();

setGUI();

}

protectedvoidClearButtonClicked(){

Systemoutprintln(ClearButtonClicked);

SearchTextrequestFocus();

SearchTextselectAll();

}//处理ClearButton按钮事件子程序

protectedvoidSearchButtonClicked(){

Systemoutprintln(SearchButtonClicked);

SearchTextrequestFocus();

SearchTextselectAll();

}//处理SearchButton按钮事件子程序

classButtonActionimplementsjavaawteventActionListener{

publicvoidactionPerformed(javaawteventActionEventevent){

Objectobject=eventgetSource();

if(object==ClearButton)

ClearButtonClicked();

elseif(object==SearchButton)

SearchButtonClicked();

}//endpublicvoidactionPerformed(

}//监听事件的发生如按钮的按下鼠标的按动等转向相应的处理

publicvoidsetGUI(){

TopPanel=newcomsunjavaswingJPanel();//TopPanel面板

javaawtGridBagLayoutTopLayout=newjavaawtGridBagLayout();

TopPanelsetLayout(TopLayout);

ClearButton=newcomsunjavaswingJButton(Clear);//ClearButton按钮

SearchText=newcomsunjavaswingJTextField(Entertexthere);//SearchText文本框

SearchButton=newJButton(Search);//SearchButton按钮

TopPaneladd(SearchText);//在TopPanel上安装SearchText文本框

TopPaneladd(SearchButton);///在TopPanel上安装SearchButton按钮

TopPaneladd(ClearButton);//在TopPanel上安装ClearButton按钮

MainPanel=newcomsunjavaswingJPanel();//主面板MainPanel

javaawtGridBagLayoutMainLayout=newjavaawtGridBagLayout();

MainPanelsetLayout(MainLayout);

javaawtGridBagConstraintsMainConstraints=newjavaawtGridBagConstraints();

SetConstraints(MainConstraintsGBCBOTHTOPPANELXTOPPANELY);//TopPanel

MainLayoutsetConstraints(TopPanelMainConstraints);

MainPaneladd(TopPanel);//将TopPanel装入主面板MainPanel

thisgetContentPane()add(MainPanel);//将主面板装入Jframe框架

thissetSize();//设置显示大小可在程序中更改

thissetVisible(true);//设置可显示

SearchTextrequestFocus();//文本框聚焦(选中)

SearchTextselectAll();

ButtonActionBAction=newButtonAction();

ClearButtonaddActionListener(BAction);//将按钮加入到活动监听器中

SearchButtonaddActionListener(BAction);

}

publicstaticvoidmain(Stringargs[]){

myGUImGUI=newmyGUI();

}//启动主程序

JAVA的GUI界面是由一系列嵌入组件组成的它使用了JDK和JFC(SWING)组件本例首先建立框架(JFRAME)在上面再建一个主面板(MAINPANEL)再往下建立一个子面板(TOPPANEL)然后将两个按钮和一个文本框插入到子面板中这是一个典型的OOP实例 在程序分别捕捉到两个按钮的按动后并显示按钮信息后再选取文本框中的内容这个软件经扩充可加入更多的子面板和更多更复杂的组件(如JTABLE表格或JTREE树)注意这个myGUIjava文件可用任何文本编辑软件编辑以纯文本方式存盘JFC的组件比AWT的组件更美观同样的按钮JFC的好看并能进行更多的设置

在安装好JAVA (JDK)和JFC(SWING或更高版本这些系统可在有关网站下载)后即可在WINDOWS的DOS方式下编译和运行文件了

先对文件进行编译

javac myGUIjava

如无错误可用下面命令运行文件

java myGUIclass

此时就可以看到一幅漂亮的界面

               

上一篇:两种Java容器类List和Set分析

下一篇:Java多线程中wait语句的具体使用方法