📄 mainframe.java~100~
字号:
package texteditor;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*; /**
* <p>Title: 文本编辑器</p>
* <p>Description: 本软件为面向对象程序设计期末作业,不得擅自修改</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: 边缘开发室</p>
* @author 第三组 ,组长:谭XX
* @version 1.0
*/
import javax.swing.event.*;
public class MainFrame
extends JFrame
{
JPanel contentPane;
BorderLayout borderLayout1 = new BorderLayout();
JMenuBar jMenuBar1 = new JMenuBar();
JMenu jMenu1 = new JMenu();
JMenuItem jMenuItem1 = new JMenuItem();
JMenuItem jMenuItem2 = new JMenuItem();
JMenuItem jMenuItem3 = new JMenuItem();
JMenu jMenu2 = new JMenu();
JMenuItem jMenuItem4 = new JMenuItem();
JMenu jMenu4 = new JMenu();
JMenuItem jMenuItem7 = new JMenuItem();
JMenuItem jMenuItem8 = new JMenuItem();
JMenuItem jMenuItem9 = new JMenuItem();
JMenuItem jMenuItem10 = new JMenuItem();
JMenuItem jMenuItem11 = new JMenuItem();
JPanel jPanel1 = new JPanel();
JScrollPane jScrollPane1 = new JScrollPane();
static JTextArea contentText = new JTextArea();
JLabel stateLabel = new JLabel();
GridLayout gridLayout1 = new GridLayout();
FontSetting fontSetting = new FontSetting();
JCheckBoxMenuItem autoLineWrapItem = new JCheckBoxMenuItem();
JMenuItem jMenuItem5 = new JMenuItem();
//判断当前是不是新建的文档,如果是,则为true,否则为false
boolean changed;
//所操作的文件路径
String filePath = null;
//文件对话框
JFileChooser jfc = new JFileChooser();
String fileName; //当前文件名
JToolBar jToolBar1 = new JToolBar();
JButton saveButton = new JButton();
JButton openButton = new JButton();
JButton findButton = new JButton();
JButton newButton = new JButton();
JMenuItem jMenuItem12 = new JMenuItem();
JMenuItem jMenuItem13 = new JMenuItem();
JMenu jMenu5 = new JMenu();
JMenuItem defaultUIMenu = new JMenuItem();
JMenuItem jMenuItem15 = new JMenuItem();
JMenu jMenu3 = new JMenu();
JMenuItem jMenuItem6 = new JMenuItem();
FindDialog findStringDialog;
JMenuItem jMenuItem17 = new JMenuItem();
JMenuItem jMenuItem18 = new JMenuItem();
JMenuItem jMenuItem16 = new JMenuItem();
JMenuItem jMenuItem19 = new JMenuItem();
JPopupMenu popupMenu = new JPopupMenu();
JMenuItem jMenuItem14 = new JMenuItem();
JMenuItem jMenuItem20 = new JMenuItem();
JMenuItem jMenuItem21 = new JMenuItem();
JMenuItem jMenuItem22 = new JMenuItem();
JMenuItem jMenuItem23 = new JMenuItem();
JMenuItem jMenuItem24 = new JMenuItem();
JMenuItem jMenuItem25 = new JMenuItem();
JMenuItem jMenuItem26 = new JMenuItem();
JMenuItem jMenuItem27 = new JMenuItem();
JMenu jMenu6 = new JMenu();
JMenuItem jMenuItem28 = new JMenuItem();
JRadioButtonMenuItem jRadioButtonMenuItem1 = new JRadioButtonMenuItem();
public MainFrame()
{
try
{
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
}
catch (Exception exception)
{
exception.printStackTrace();
}
}
/**
* Component initialization.
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception
{
contentPane = (JPanel) getContentPane();
contentPane.setLayout(borderLayout1);
setSize(new Dimension(700, 500));
this.setState(Frame.NORMAL);
setTitle("文字处理器");
this.addWindowListener(new MainFrame_this_windowAdapter(this));
jMenu1.setText("文件");
jMenuItem1.setText("打开");
jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke('O',
java.awt.event.KeyEvent.CTRL_MASK, true));
jMenuItem1.addActionListener(new MainFrame_jMenuItem1_actionAdapter(this));
jMenuItem2.setText("保存");
jMenuItem2.setAccelerator(javax.swing.KeyStroke.getKeyStroke('S',
java.awt.event.KeyEvent.CTRL_MASK, true));
jMenuItem2.addActionListener(new MainFrame_jMenuItem2_actionAdapter(this));
jMenuItem3.setText("退出");
jMenuItem3.setAccelerator(javax.swing.KeyStroke.getKeyStroke('Q',
java.awt.event.KeyEvent.CTRL_MASK, false));
jMenuItem3.addActionListener(new MainFrame_jMenuItem3_actionAdapter(this));
jMenu2.setText("设置");
jMenuItem4.setText("高级设置");
jMenuItem4.setAccelerator(javax.swing.KeyStroke.getKeyStroke('S',
java.awt.event.KeyEvent.CTRL_MASK | java.awt.event.KeyEvent.SHIFT_MASK, true));
jMenuItem4.addActionListener(new MainFrame_jMenuItem4_actionAdapter(this));
jMenu4.setText("处理");
jMenuItem7.setText("复制");
jMenuItem7.setAccelerator(javax.swing.KeyStroke.getKeyStroke('C',
java.awt.event.KeyEvent.CTRL_MASK, true));
jMenuItem7.addActionListener(new MainFrame_jMenuItem7_actionAdapter(this));
jMenuItem8.setText("剪切");
jMenuItem8.setAccelerator(javax.swing.KeyStroke.getKeyStroke('X',
java.awt.event.KeyEvent.CTRL_MASK, false));
jMenuItem8.addActionListener(new MainFrame_jMenuItem8_actionAdapter(this));
jMenuItem9.setText("粘贴");
jMenuItem9.setAccelerator(javax.swing.KeyStroke.getKeyStroke('V',
java.awt.event.KeyEvent.CTRL_MASK, true));
jMenuItem9.addActionListener(new MainFrame_jMenuItem9_actionAdapter(this));
jMenuItem10.setText("删除");
jMenuItem10.addActionListener(new MainFrame_jMenuItem10_actionAdapter(this));
jMenuItem11.setText("全选");
jMenuItem11.setAccelerator(javax.swing.KeyStroke.getKeyStroke('A',
java.awt.event.KeyEvent.CTRL_MASK, true));
jMenuItem11.addActionListener(new MainFrame_jMenuItem11_actionAdapter(this));
jPanel1.setLayout(gridLayout1);
jPanel1.setBorder(null);
contentText.setBorder(null);
contentText.setDoubleBuffered(true);
contentText.setForeground(new Color(0, 0, 93)); //初始化字体颜色和背景色及大小
contentText.setBackground(new Color(71, 171, 255));
contentText.setFont(new Font("", Font.PLAIN, 14));
contentText.setTabSize(4);
//给文本框添加监听,如果对文本操作,就引起以下事件
contentText.getDocument().addDocumentListener(new DocumentChangedHandle());
autoLineWrapItem.setText("自动换行");
autoLineWrapItem.addChangeListener(new
MainFrame_autoLineWrapItem_changeAdapter(this));
jMenuItem5.setText("新建");
jMenuItem5.setAccelerator(javax.swing.KeyStroke.getKeyStroke('N',
java.awt.event.KeyEvent.CTRL_MASK, true));
jMenuItem5.addActionListener(new MainFrame_jMenuItem5_actionAdapter(this));
stateLabel.setText(" ");
jToolBar1.setFloatable(true);
saveButton.setToolTipText("保存");
saveButton.setIcon(new ImageIcon("src/image/save.png"));
saveButton.addActionListener(new MainFrame_saveButton_actionAdapter(this));
// openButton.setText("");
openButton.setToolTipText("打开");
openButton.setIcon(new ImageIcon("src/image/open.png"));
openButton.addActionListener(new MainFrame_openButton_actionAdapter(this));
//findButton.setText("");
findButton.setToolTipText("查找");
findButton.setIcon(new ImageIcon("src/image/find.png"));
findButton.addActionListener(new MainFrame_findButton_actionAdapter(this));
//newButton.setText("");
newButton.setToolTipText("新建");
newButton.setIcon(new ImageIcon("src/image/new.png"));
newButton.addActionListener(new MainFrame_newButton_actionAdapter(this));
jMenuItem12.setText("另存为");
jMenuItem12.setAccelerator(javax.swing.KeyStroke.getKeyStroke('S',
java.awt.event.KeyEvent.CTRL_MASK | java.awt.event.KeyEvent.ALT_MASK, false));
jMenuItem12.addActionListener(new MainFrame_jMenuItem12_actionAdapter(this));
jMenuItem13.setText("查找");
jMenuItem13.setAccelerator(javax.swing.KeyStroke.getKeyStroke('F',
java.awt.event.KeyEvent.CTRL_MASK, false));
jMenuItem13.addActionListener(new MainFrame_jMenuItem13_actionAdapter(this));
jMenu5.setText("界面选择");
defaultUIMenu.setText("默认");
defaultUIMenu.addActionListener(new MainFrame_defaultUIMenu_actionAdapter(this));
jMenuItem15.setText("windows");
jMenuItem15.addActionListener(new MainFrame_jMenuItem15_actionAdapter(this));
jMenu3.setText("帮助");
jMenuItem6.setText("帮助系统");
jMenuItem6.addActionListener(new MainFrame_jMenuItem6_actionAdapter(this));
jMenuItem17.setText("剪切");
jMenuItem18.setText("复制");
jMenuItem16.setText("粘贴");
jMenuItem19.setText("删除");
jMenuItem14.setText("新建");
jMenuItem20.setText("打开");
jMenuItem21.setText("保存");
jMenuItem22.setText("另存为");
jMenuItem23.setText("剪切");
jMenuItem24.setText("复制");
jMenuItem25.setText("粘贴");
jMenuItem26.setText("删除");
jMenuItem27.setText("退出");
jMenu6.setText("设置");
jMenuItem28.setText("高级设置");
jRadioButtonMenuItem1.setEnabled(false);
jRadioButtonMenuItem1.setText("自动换行");
jMenuBar1.add(jMenu1);
jMenuBar1.add(jMenu4);
jMenuBar1.add(jMenu2);
jMenuBar1.add(jMenu5);
jMenuBar1.add(jMenu3);
jMenu1.add(jMenuItem5);
jMenu1.addSeparator();
jMenu1.add(jMenuItem1);
jMenu1.add(jMenuItem2);
jMenu1.add(jMenuItem12);
jMenu1.addSeparator();
jMenu1.add(jMenuItem3);
jMenu2.add(jMenuItem4);
jMenu2.add(autoLineWrapItem);
jMenu4.add(jMenuItem13);
jMenu4.addSeparator();
jMenu4.add(jMenuItem11);
jMenu4.addSeparator();
jMenu4.add(jMenuItem7);
jMenu4.add(jMenuItem8);
jMenu4.add(jMenuItem9);
jMenu4.addSeparator();
jMenu4.add(jMenuItem10);
contentPane.add(jScrollPane1, java.awt.BorderLayout.CENTER);
contentPane.add(jPanel1, java.awt.BorderLayout.SOUTH);
jPanel1.add(stateLabel);
jScrollPane1.getViewport().add(contentText);
jToolBar1.add(newButton, null);
jToolBar1.add(openButton, null);
jToolBar1.add(saveButton, null);
jToolBar1.add(findButton, null);
jMenu5.add(defaultUIMenu);
jMenu5.add(jMenuItem15);
jMenu3.add(jMenuItem6);
this.getContentPane().add(jToolBar1, BorderLayout.NORTH);
popupMenu.add(jMenuItem14);
popupMenu.addSeparator();
popupMenu.add(jMenuItem20);
popupMenu.add(jMenuItem21);
popupMenu.add(jMenuItem22);
popupMenu.addSeparator();
popupMenu.add(jMenu6);
popupMenu.addSeparator();
popupMenu.add(jMenuItem23);
popupMenu.add(jMenuItem24);
popupMenu.add(jMenuItem25);
popupMenu.addSeparator();
popupMenu.add(jMenuItem26);
popupMenu.addSeparator();
popupMenu.add(jMenuItem27);
jMenu6.add(jMenuItem28);
jMenu6.add(jRadioButtonMenuItem1);
//createPopupMenu();
this.setJMenuBar(jMenuBar1);
contentText.add(popupMenu);
contentText.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
if(e.getModifiers()==Event.META_MASK)
{
popupMenu.show(contentText,e.getX(),e.getY());
}
}
});
}
//复制操作
public void jMenuItem7_actionPerformed(ActionEvent e)
{
contentText.copy();
}
void quitHandle()
{
int n;
Object[] option =
{
"是", "否", "取消"};
if (changed == true)
{
//打开消息对话框
n = JOptionPane.showOptionDialog(null,
"你的文件还没有保存,你想现在保存吗?",
"保存",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
option,
option[0]);
switch (n)
{
case JOptionPane.YES_OPTION:
{
doSave(fileName); //保存文件然后退出
System.exit(0);
}
case JOptionPane.NO_OPTION:
{
System.exit(0); //如果选择否则直接退出
}
case JOptionPane.CANCEL_OPTION:
{
break;
}
default:
}
}
}
public void jMenuItem3_actionPerformed(ActionEvent e)
{
quitHandle(); //调用退出处理方法
}
//****************************************************************************
//这个类中类是为了实现在文本框中删除或者添加时,使改变标志为true
class DocumentChangedHandle
implements DocumentListener
{
public void insertUpdate(DocumentEvent e)
{
changed = true;
}
public void removeUpdate(DocumentEvent e)
{
changed = true;
}
public void changedUpdate(DocumentEvent e)
{
changed = true;
}
}
//保存功能实现
private void doSave(String fileName)
{
FileOutputStream fos = null;
if (fileName == null)
{
doSaveAs();
}
else
{
String str = contentText.getText();
try
{
fos = new FileOutputStream(fileName);
fos.write(str.getBytes());
}
catch (IOException e)
{
}
finally
{
try
{
fos.close();
}
catch (IOException e2)
{
}
}
stateLabel.setText(fileName + " 文件大小为:" + (new File(fileName)).length() +
" 字节"); //在状态栏上设置当前文件
changed = false;
}
}
//另存为功能实现
private void doSaveAs()
{
FileOutputStream fos = null;
String str = contentText.getText();
jfc.showSaveDialog(this);
//jfc.addChoosableFileFilter(new FileFilter());//添加文件过滤
if (jfc.getSelectedFile() == null || jfc.getSelectedFile().toString() == "")
{
return;
}
fileName = jfc.getSelectedFile().toString();
try
{
fos = new FileOutputStream(fileName);
fos.write(str.getBytes());
}
catch (IOException e)
{
}
finally
{
try
{
fos.close();
}
catch (IOException e2)
{
}
}
changed = false;
}
//****************************************************************************
public void jMenuItem4_actionPerformed(ActionEvent e)
{
if (!fontSetting.isVisible())
{
fontSetting.setVisible(true);
}
else
{
//如果窗口正在显示,则不用设置显示,将此窗口显示在最前面
fontSetting.toFront();
}
}
void autoLineWrapItem_stateChanged(ChangeEvent e)
{
if (autoLineWrapItem.isSelected())
{
contentText.setLineWrap(true);
}
else
{
contentText.setLineWrap(false);
}
}
void jMenuItem6_actionPerformed(ActionEvent e)
{
//以弹出提示对话框的形式说明本软件的一些简单信息
String helpMessage = "此软件实为2001级计算机科学与技术专业面向对象程序设计" + '\n'
+ "第一组的程序设计,具体要求是模仿windows的记事本,做" + '\n'
+ "一个文字处理器,要求能对文本进行字体的选择,字号的设" + '\n'
+ "定,字体颜色的的设置等操作,同时要实现打开与保存功能" + '\n'
+ "组长:谭正辉 成员:海航 苏运敏 黄锋 邹宁 陈瑞佳 林" + '\n'
+ "猛 崔林 吴石林 林继青 周娴 羊吉兰***************" + '\n'; ;
ShowECM.showMessage(helpMessage, "帮助系统");
}
//全选操作
void jMenuItem11_actionPerformed(ActionEvent e)
{
contentText.selectAll();
}
//剪切操作
void jMenuItem8_actionPerformed(ActionEvent e)
{
contentText.cut();
}
//粘贴操作
void jMenuItem9_actionPerformed(ActionEvent e)
{
contentText.paste();
}
void jMenuItem10_actionPerformed(ActionEvent e)
{
/*String s =contentText.getSelectedText();
contentText.*/
//用“”代替选择区域的字体,相当于删除
contentText.replaceSelection("");
}
void jMenuItem5_actionPerformed(ActionEvent e)
{
createNewText();
//结束新建菜单响应事件
}
private void createNewText() throws HeadlessException
{
int n;
Object[] option =
{
"是", "否", "取消"};
if (changed == true)
{
//打开消息对话框
n = JOptionPane.showOptionDialog(null,
"你的文件还没有保存,你想现在保存吗?",
"保存",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
option,
option[0]);
switch (n)
{
case JOptionPane.YES_OPTION:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -