选择显示字体大小

用jbuilder 9 开发一个文本编辑器

一、概述

  文本编辑器是一种最常用的应用程序,下面我们利用jbuilder 9集成开发环境,用java语言实现一个简单的文本编辑器。该文本编辑器具有读出、写入、编辑文本文件,可以设定文字颜色、字形和编辑区域背景颜色等基本功能。

  我们首先通过jbuilder 9项目向导和应用向导创建项目,然后应用可视化设计工具,修改ui设计,连接事件,编辑源码以及常用控件和任务诸如菜单项、工具条、文本区域和系统事件等常用控件和任务的处理。涉及到具体技术有:

   用jfilechooser 对话框让用户选择文本文件。

   用jtextarea读、写和处理文本文件中的文字。

   设置前景色和背景色。

   用dbswing fontchooser对话框设置字型。

   在状态栏和窗口标题栏显示信息。

   手工添加处理ui事件的代码 。

   通过将代码放在一个可被菜单项和按钮两个事件处理器调用的新的"帮助"方法中, 使得菜单项和按钮执行相同的代码。

   给jtextarea控件增加一个右击菜单。

   保持对文件的位置以及文件是否活动过的跟踪,展示对文件新建, 文件打开, 文件保存, 文件另存为,编辑和退出等逻辑的处理。

   将"text editor" 应用程序展开为jar 文件。

  二、开发文本编辑器java源程序说明

  文本编辑器程序包含三个java 源程序即texteditframe.java、texteditclass.java 和texteditframe_aboutbox.java 程序,下面将分别介绍如下:

  1、texteditframe.java的源程序代码(节选部分):

package texteditor;
//texteditframe.java
import java.awt.*;//导入类
import java.awt.event.*;
import javax.swing.*;
import com.borland.dbswing.*;
import java.io.*;
import javax.swing.text.*;
import javax.swing.event.*;
public class texteditframe extends jframe {
intlswingsupport intlswingsupport1 = new intlswingsupport();
//swing 控件互联网化:即本地化应用程序,需要添加一行代码以便swing 控件jfilechooser //和jcolorchooser出现在程序运行的语言中
jpanel contentpane; //设置内容窗(contentpane)的jpanel控件
jmenubar menubar1 = new jmenubar();//创建菜单条并加入到框架窗体中
jmenu menufile = new jmenu();//创建file菜单和相应的菜单项
jmenuitem menufileexit = new jmenuitem();
jmenu menuhelp = new jmenu();//创建help菜单和相应的菜单项
jmenuitem menuhelpabout = new jmenuitem();
jtoolbar toolbar = new jtoolbar();//创建工具条组件
jbutton jbutton1 = new jbutton();//创建按钮组件
jbutton jbutton2 = new jbutton();
jbutton jbutton3 = new jbutton();
imageicon image1;//定义图标
imageicon image2;
imageicon image3;
jlabel statusbar = new jlabel();//创建标签组件
borderlayout borderlayout1 = new borderlayout();//创建borderlayout 布局器
jscrollpane jscrollpane1 = new jscrollpane();//创建滚动窗控件
jtextarea jtextarea1 = new jtextarea();//创建多行文本域组件
jmenuitem jmenuitem1 = new jmenuitem();//创建菜单项
jmenuitem jmenuitem2 = new jmenuitem();
jmenuitem jmenuitem3 = new jmenuitem();
jmenuitem jmenuitem4 = new jmenuitem();
fontchooser fontchooser1 = new fontchooser();//创建字型选择对话框
jmenu jmenu1 = new jmenu();
jmenuitem jmenuitem5 = new jmenuitem();
jmenuitem jmenuitem6 = new jmenuitem();
jmenuitem jmenuitem7 = new jmenuitem();
jfilechooser jfilechooser1 = new jfilechooser();//创建文本选择对话框
string currfilename = null; // full path with filename. null means new/untitled.
boolean dirty = false;
document document1; //文本
dbtextdatabinder dbtextdatabinder1 = new dbtextdatabinder();
// true means modified text.
//构造架框
public texteditframe() {
 enableevents(awtevent.window_event_mask);
 try {
  jbinit();
  updatecaption();
 }
 catch(exception e) {
  e.printstacktrace();
 }
}
//组件初始化
private void jbinit() throws exception {
 //三个工具栏按钮图标
 image1 = new imageicon(texteditframe.class.getresource("openfile.gif"));
 image2 = new imageicon(texteditframe.class.getresource("closefile.gif"));
 image3 = new imageicon(texteditframe.class.getresource("help.gif"));
 contentpane = (jpanel) this.getcontentpane();//内容创格
 document1 = jtextarea1.getdocument();//多行文本域文档
 contentpane.setlayout(borderlayout1);//borderlayout布局器
 this.setsize(new dimension(400, 300));//窗口大小
 this.settitle("text editor");//窗口标题
 statusbar.settext(" ");
 menufile.settext("file");
 menufileexit.settext("exit");
 menufileexit.addactionlistener(new texteditframe_menufileexit_actionadapter (this));
 //添加事件监听器
 menuhelp.settext("help");
 menuhelpabout.settext("about");
 menuhelpabout.addactionlistener(new texteditframe_menuhelpabout_actionadapter (this));
 jbutton1.seticon(image1);//设置三个工具栏按钮图标,添加事件监听器
 jbutton1.addactionlistener(new texteditframe_jbutton1_actionadapter(this));
 jbutton1.settooltiptext("open file");
 jbutton2.seticon(image2);
 jbutton2.addactionlistener(new texteditframe_jbutton2_actionadapter(this));
 jbutton2.settooltiptext("close file");
 jbutton3.seticon(image3);
 jbutton3.addactionlistener(new texteditframe_jbutton3_actionadapter(this));
 jbutton3.settooltiptext("about");
 jtextarea1.setlinewrap(true);
 jtextarea1.setwrapstyleword(true);
 jtextarea1.setbackground(color.white);
 jmenuitem1.settext("new");//设置菜单,添加事件监听器
 jmenuitem1.addactionlistener(new texteditframe_jmenuitem1_actionadapter(this));
 jmenuitem2.settext("open");
 jmenuitem2.addactionlistener(new texteditframe_jmenuitem2_actionadapter(this));
 jmenuitem3.settext("save");
 jmenuitem3.addactionlistener(new texteditframe_jmenuitem3_actionadapter(this));
 jmenuitem4.settext("save as");
 jmenuitem4.addactionlistener(new texteditframe_jmenuitem4_actionadapter(this));
 fontchooser1.setframe(this);
 fontchooser1.settitle("font");
 jmenu1.settext("edit");
 jmenuitem5.settext("font");
 jmenuitem5.addactionlistener(new texteditframe_jmenuitem5_actionadapter(this));
 jmenuitem6.settext("foreground color");
 jmenuitem6.addactionlistener(new texteditframe_jmenuitem6_actionadapter(this));
 jmenuitem7.settext("background color");
 jmenuitem7.addactionlistener(new texteditframe_jmenuitem7_actionadapter(this));
 document1.adddocumentlistener(new texteditframe_document1_documentadapter(this));
 dbtextdatabinder1.setjtextcomponent(jtextarea1);
 //turn off right-click file open... menu item.
 dbtextdatabinder1.setenablefileloading(false);
 //turn off right-click file save... menu item.
 dbtextdatabinder1.setenablefilesaving(false);
 toolbar.add(jbutton1);//工具组件添加按钮
 toolbar.add(jbutton2);
 toolbar.add(jbutton3);
 menufile.add(jmenuitem1);//菜单组件添加菜单项
 menufile.add(jmenuitem2);
 menufile.add(jmenuitem3);
 menufile.add(jmenuitem4);
 menufile.addseparator();//采单组件添加分隔线
 menufile.add(menufileexit);
 menuhelp.add(menuhelpabout);
 menubar1.add(menufile);
 menubar1.add(jmenu1);
 menubar1.add(menuhelp);
 this.setjmenubar(menubar1);
 contentpane.add(toolbar, borderlayout.north);
 //内容窗设置borderlayout布局器
 contentpane.add(statusbar, borderlayout.south);
 contentpane.add(jscrollpane1, borderlayout.center);
 jscrollpane1.getviewport().add(jtextarea1, null);
 jmenu1.add(jmenuitem5);
 jmenu1.add(jmenuitem6);
 jmenu1.add(jmenuitem7);
}
// display the about box.
void helpabout() {
 texteditframe_aboutbox dlg = new texteditframe_aboutbox(this);
 dimension dlgsize = dlg.getpreferredsize();
 dimension frmsize = getsize();
 point loc = getlocation();
 dlg.setlocation((frmsize.width - dlgsize.width) / 2 + loc.x, (frmsize.height - dlgsize.height) / 2 + loc.y);
 dlg.setmodal(true);
 dlg.show();
}
.........
.........


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons