import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.*;//class class TextEditorFrame extends JFrame { File file = null; Color color = Color.black; GraphicsEnvironment getFont = GraphicsEnvironment.getLocalGraphicsEnvironment(); //GraphicsEnvironment得到系统所允许使用的所有字体 Font []fonts = getFont.getAllFonts(); // JTextPane text = new JTextPane(); JFileChooser filechooser = new JFileChooser(); //JFileChooser 为用户选择文件提供了一种简单的机制 JColorChooser colorchooser = new JColorChooser(); //JColorChooser 提供一个用于允许用户操作和选择颜色的控制器窗格 JDialog about = new JDialog(this); JMenuBar menubar = new JMenuBar(); //菜单栏的实现 //主窗体初始化 TextEditorFrame() { initTextPane(); //面板 initMenu(); //菜单 initAboutDialog();//关于对话框 initToolBar(); //工具栏 } //面板初始化 void initTextPane() { setFont(new Font("Times New Roman",Font.PLAIN,12)); getContentPane().add( new JScrollPane(text)); } //--------------------------------------------------------------------------- //菜单的定义 用数组来定义 //super Menue JMenu [] menus= new JMenu[] { new JMenu("文件"), new JMenu("编辑"), new JMenu("设置"), new JMenu("工具"), new JMenu("帮助") }; //sub Menue JMenuItem menuitems [][] =new JMenuItem[][] { { new JMenuItem("新建"), new JMenuItem("打开..."), new JMenuItem("保存..."), new JMenuItem("退出") }, { new JMenuItem("复制"), new JMenuItem("剪切"), new JMenuItem("粘贴"), new JMenuItem("选择全部"), new JMenuItem("查找")
}, { new JMenuItem("字体"),
new JMenuItem("颜色")
},
{ new JMenuItem("MS 记事本") },
{ new JMenuItem("关于") } }; //----------------------------------------------------------------------------- //菜单的初始化 以及添加事件监听 void initMenu() { for(int i=0;i<menus.length;i++) { menubar.add(menus[i]); for(int j=0;j<menuitems[i].length;j++) { menus[i].add(menuitems[i][j]); menuitems[i][j].addActionListener(action); } } this.setJMenuBar(menubar); } //----------------------------------------------------------------------------- //事件处理 ActionListener action = new ActionListener() { public void actionPerformed(ActionEvent e) { JMenuItem mi = (JMenuItem)e.getSource(); String id = mi.getText(); if(id.equals("新建")){ Date date=new Date(); text.setText(date.toString());
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;//class
class TextEditorFrame extends JFrame
{
File file = null;
Color color = Color.black;
GraphicsEnvironment getFont = GraphicsEnvironment.getLocalGraphicsEnvironment(); //GraphicsEnvironment得到系统所允许使用的所有字体
Font []fonts = getFont.getAllFonts();
//
JTextPane text = new JTextPane();
JFileChooser filechooser = new JFileChooser(); //JFileChooser 为用户选择文件提供了一种简单的机制
JColorChooser colorchooser = new JColorChooser(); //JColorChooser 提供一个用于允许用户操作和选择颜色的控制器窗格
JDialog about = new JDialog(this);
JMenuBar menubar = new JMenuBar(); //菜单栏的实现
//主窗体初始化
TextEditorFrame()
{
initTextPane(); //面板
initMenu(); //菜单
initAboutDialog();//关于对话框
initToolBar(); //工具栏 }
//面板初始化
void initTextPane()
{
setFont(new Font("Times New Roman",Font.PLAIN,12));
getContentPane().add( new JScrollPane(text));
} //---------------------------------------------------------------------------
//菜单的定义 用数组来定义
//super Menue
JMenu [] menus= new JMenu[]
{
new JMenu("文件"),
new JMenu("编辑"),
new JMenu("设置"),
new JMenu("工具"),
new JMenu("帮助")
}; //sub Menue
JMenuItem menuitems [][] =new JMenuItem[][]
{
{
new JMenuItem("新建"),
new JMenuItem("打开..."),
new JMenuItem("保存..."),
new JMenuItem("退出")
},
{
new JMenuItem("复制"),
new JMenuItem("剪切"),
new JMenuItem("粘贴"),
new JMenuItem("选择全部"),
new JMenuItem("查找")
},
{ new JMenuItem("字体"),
new JMenuItem("颜色")
},
{ new JMenuItem("MS 记事本")
},
{
new JMenuItem("关于")
}
};
//-----------------------------------------------------------------------------
//菜单的初始化 以及添加事件监听
void initMenu()
{
for(int i=0;i<menus.length;i++)
{
menubar.add(menus[i]);
for(int j=0;j<menuitems[i].length;j++)
{
menus[i].add(menuitems[i][j]); menuitems[i][j].addActionListener(action);
}
} this.setJMenuBar(menubar);
}
//----------------------------------------------------------------------------- //事件处理
ActionListener action = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JMenuItem mi = (JMenuItem)e.getSource(); String id = mi.getText();
if(id.equals("新建")){
Date date=new Date();
text.setText(date.toString());
file = null;
}else if(id.equals("打开...")){
if(file != null)
filechooser.setSelectedFile(file); int returnVal = filechooser.showOpenDialog(TextEditorFrame.this); if(returnVal == JFileChooser.APPROVE_OPTION){
file = filechooser.getSelectedFile();
openFile();
}
}
else if(id.equals("保存...")){
if(file != null)
filechooser.setSelectedFile(file); int returnVal = filechooser.showSaveDialog(TextEditorFrame.this); if(returnVal == JFileChooser.APPROVE_OPTION){
file = filechooser.getSelectedFile();
saveFile();
}}else if(id.equals("退出")){
System.exit(0);
}else if(id.equals("复制")){
text.copy();
}else if(id.equals("剪切")){
text.cut();
}else if(id.equals("粘贴")){
text.paste();
}else if(id.equals("选择全部")){
text.selectAll();
}else if(id.equals("颜色")){
color = JColorChooser.showDialog(TextEditorFrame.this,"",color);
text.setForeground(color);
}else if(id.equals("MS 记事本")){
try{
String command = "notepad.exe";
Process child = Runtime.getRuntime().exec(command);
//ecec()方法返回一个Process对象,可以使用这个对象控制Java程序与新运行的进程进行交互
//ecec()方法启动windows的记事本notepad
}
catch (IOException ex)
{
}
}else if(id.equals("关于")){
about.setSize(550,300);
about.show();
} }
};
void openFile()
{
try{
FileReader fr = new FileReader(file);
int len = (int) file.length();
char [] buffer = new char[len];
fr.read(buffer,0,len);
fr.close();
text.setText(new String(buffer));
}
catch(Exception e)
{
e.printStackTrace();
}
}
// -------------------------------------------------------------------------------
// 保存文件
void saveFile()
{
try{
FileWriter fw = new FileWriter(file);
fw.write(text.getText());
fw.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
//---------------------------------------------------------------
//--------------------------------------------------------------
//关于对话框
void initAboutDialog()
{ about.setTitle("关于... ");
about.getContentPane().setBackground(Color.green );
about.getContentPane().add(new JLabel("本程序实现一个文本编辑器,功能和XP系统自带的记事本基本一样,多出了工具栏等一些东西!"));
about.setModal(true); }
//---------------------------------------------------------------
//#########################################
JToolBar toolbar = new JToolBar();
JButton [] buttons = new JButton[]
{
new JButton("copy"), new JButton("cut"), new JButton("paste"), new JButton("Note")
};
//#############################################
//-------------------------------------------------------------------------------------------------------------------
//工具栏
void initToolBar()
{
for(int i=0; i<buttons.length;i++)
toolbar.add(buttons[i]);
buttons[0].setToolTipText("复制");
buttons[0].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
text.copy();
}
}); buttons[1].setToolTipText("剪切");
buttons[1].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
text.cut();
}
}); buttons[2].setToolTipText("粘贴");
buttons[2].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
text.paste();
}
}); buttons[3].setToolTipText("MS 记事本");
buttons[3].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
try{
String command = "notepad.exe";
Process child = Runtime.getRuntime().exec(command);
}
catch (IOException ex)
{
}
}
}); this.getContentPane().add(toolbar,BorderLayout.NORTH); } }
//-----------------------------------------------------------------------------------------------------
//入口函数
public class TextEditor
{ public static void main( String [] args){ TextEditorFrame f = new TextEditorFrame();
f.setTitle("简单文本编辑器 ");
f.setSize(600,500);
f.show(); }
}