[摘要]另存为,编辑和退出等逻辑的处理。 将"Text Editor" 应用程序展开为JAR 文件。 二、开发文本编辑器java源程序说明 文本编辑器程序包含三个java ...
另存为,编辑和退出等逻辑的处理。
将"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();
}
.........
.........
TextEditFrame.java 是实现文本编辑器的主要程序,它有下面6点编程技巧说明:
1) 制作一个完全充满用户界面顶部菜单栏和底部状态栏之间区域的文本区
主用户界面容器的布局管理器需要采用边界布局(Borderlayout)。在主容器中,含有一个叫做内容窗(contentPane)的JPanel 控件,被改变成边界布局,需要做的只是在内容窗添加一个文本区控件。为此,先在内容窗添加一个滚动窗,再在滚动窗内放上文本区控件(jTextArea)。滚动窗提供一个带滚动棒(JScollPane)的文本区。
一个边界布局的容器被分成五个区域:北、南、东、西、中。每个区域只能有一个控件,所以最多可有五个控件(注:含有多个控件的面板被认为是一个控件)。放进中心区域的控件完全占满该容器控件,不被含有控件的任何其他区域所占据。例如,在本例中,工具栏占据北区(顶),状态栏占据南区(低步),由于东西两个区域没有安排控件,这样滚动窗控件占据中心区域并扩展到容器的左(西)右(东)的边缘。
2) 创建菜单File (包含New、Open、Save、Save as 和Exit菜单项),菜单Edit{包含Font(字体)、Foreground(前景色)和Background(背景色)菜单项} 和菜单Help (包含About帮助说明)
①菜单Edit的Font(字体)、Foreground(前景色)和Background(背景色)菜单项:
添加字型选择对话框
给菜单挂上事件,从 Edit
关键词:JBuilder 9 开发一个文本编辑器