⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multipageeditor.java

📁 多页文本编辑器
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
	enum LookAndFell {
		System, Meta, CDE, WinXP, WinClass,
	};

	// 枚举标签位置
	enum TabPosion {
		Top, Bottom, Left, Right,
	};

	//工具栏“新建文档”按钮事件处理
	public void btnNew_actionPerformed(ActionEvent e) {
		NewPage();
	}

	private void NewPage() {//创建新的Tab编辑页
		EditorTabPage page = new EditorTabPage();
		this.TabControl.addTab("新建文本文档" + PageCount, new ImageIcon(this
				.getClass().getResource("ICON/TabPage.png")), page);
		PageCount += 1;
		setTabPage();
		this.repaint();
	}

	//工具栏“打开文档”按钮事件处理
	public void btnOpen_actionPerformed(ActionEvent e) {
		OpenDoc();
	}

	private void OpenDoc() {//打开一个或多个文档
		JFileChooser open = new JFileChooser();
		open.setDialogTitle("打开文件");
		open.setMultiSelectionEnabled(true);
		int result = open.showOpenDialog(this);
		if (result == JFileChooser.APPROVE_OPTION) {
			File[] files = open.getSelectedFiles();
			lblStatus.setText("正在打开文件.....");
			for (int i = 0; i < files.length; i++) {
				Open(files[i].getPath(), files[i].getName());
			}
			setTabPage();
			lblStatus.setText("准备就绪");
		}
	}

	private void setTabPage() {//设置Tab编辑页
		TabControl.setSelectedIndex(TabControl.getTabCount() - 1);
	}

	private void Open(String filename, String name) {//打开一个文件作为Tab编辑页
		EditorTabPage page = new EditorTabPage(filename);
		if (name.length() > 15) {
			name = name.substring(0, 14); // 名称太长截短
		}
		this.TabControl.addTab(name, new ImageIcon(this.getClass().getResource(
				"ICON/TabPage.png")), page); // 添加一个Tab页
		this.repaint();
	}

	// 工具栏“保存文档”按钮事件处理
	public void btnSave_actionPerformed(ActionEvent e) {
		EditorTabPage page = getCurrentPage();
		if (page != null) {
			if (page.getIsDocumentChanged()) {
				lblStatus.setText("正在保存文件......");
				page.SaveDocument();
				lblStatus.setText("准备就绪");
			}
		}
	}

	private EditorTabPage getCurrentPage() {//获取当前Tab编辑页
		if (TabControl.getSelectedIndex() == -1) {
			return null;
		}
		EditorTabPage page = (EditorTabPage) TabControl
				.getComponentAt(TabControl.getSelectedIndex());
		return page;
	}

	//工具栏“剪切”按钮事件处理
	public void btnCut_actionPerformed(ActionEvent e) {
		EditorTabPage page = getCurrentPage();
		if (page != null) {
			page.Cut();
		}
	}

	//工具栏“复制”按钮事件处理
	public void btnCopy_actionPerformed(ActionEvent e) {
		EditorTabPage page = getCurrentPage();
		if (page != null) {
			page.Copy();
		}
	}

	//工具栏“粘贴”按钮事件处理
	public void btnPaste_actionPerformed(ActionEvent e) {
		EditorTabPage page = getCurrentPage();
		if (page != null) {
			page.Paste();
		}
	}

	//工具栏“撤销”按钮事件处理
	public void btnUndo_actionPerformed(ActionEvent e) {
		EditorTabPage page = getCurrentPage();
		if (page != null) {
			page.Undo();
		}
	}

	//工具栏“重做”按钮事件处理
	public void btnRedo_actionPerformed(ActionEvent e) {
		EditorTabPage page = getCurrentPage();
		if (page != null) {
			page.Redo();
		}
	}

	//工具栏“设置字体”按钮事件处理
	public void btnFont_actionPerformed(ActionEvent e) {
		setSelectFont();
	}

	private void setSelectFont() {//设置当前文档选中文本的字体
		EditorTabPage page = getCurrentPage();
		if (page == null) {
			return;
		}
                //弹出设置字体对话框进行设置
		FontDialog dialog = new FontDialog(this, "请选择字体、字号", page
				.getDocumentFont(), true);
		dialog.showDialog();
		if (FontDialog.DialogResult.Ok == dialog.getDialogResult()) {
			page.setDocumentFont(dialog.getSelectedFont());
		}
		dialog.Dispose();
	}

	//工具栏“设置字体颜色”按钮事件处理
	public void btnFontColor_actionPerformed(ActionEvent e) {
		EditorTabPage page = getCurrentPage();
		if (page == null) {
			return;
		}
		Color color = getChooseColor(page.getFontColor());
		page.setFontColor(color);
	}

	private Color getChooseColor(Color oldcolor) {//设置选中文本的字体颜色
		Color color = JColorChooser.showDialog(this, "", oldcolor);
		return color;
	}

	//工具栏“插入日期和时间”按钮事件处理
	public void btnDateTime_actionPerformed(ActionEvent e) {
		EditorTabPage page = getCurrentPage();
		if (page != null) {
			page.InsertDataTime();
		}
	}

	//工具栏“关于本程序”按钮事件处理
	public void btnAbout_actionPerformed(ActionEvent e) {
		FrameAbout frm = new FrameAbout();
		frm.setVisible(true);
	}

	//工具栏“关闭当前页”按钮事件处理
	public void btnCloseCurrentTabPage_actionPerformed(ActionEvent e) {
		EditorTabPage page = getCurrentPage();
		if (page != null) {
			if (page.getIsDocumentChanged()) {
				if (IsWantSave() == JOptionPane.YES_OPTION) {// 要保存更改				
					page.SaveDocument();
				}
			}
			page.Dispose();
			TabControl.remove(page);
		}
	}

	private int IsWantSave() {//判断是否要保存更改
		int result = JOptionPane.showConfirmDialog(this, "本文件已被更改是否要保存本文件?",
				"保存", JOptionPane.YES_NO_OPTION,
				JOptionPane.INFORMATION_MESSAGE);
		return result;
	}
        //菜单栏“新建文档”菜单项事件处理
	public void mnuNew_actionPerformed(ActionEvent e) {
		NewPage();
	}
        //菜单栏“打开文档”菜单项事件处理
	public void mnuOpen_actionPerformed(ActionEvent e) {
		OpenDoc();
	}
        //菜单栏“关闭当前页”菜单项事件处理
	public void mnuCloseCurrentTabPage_actionPerformed(ActionEvent e) {
		btnCloseCurrentTabPage_actionPerformed(null);
	}
        //菜单栏“全部关闭”菜单项事件处理
	public void mnuCloseAll_actionPerformed(ActionEvent e) {
		while (this.TabControl.getSelectedIndex() != -1) {
			btnCloseCurrentTabPage_actionPerformed(null);
		}
	}
        //菜单栏“保存”菜单项事件处理
	public void mnuSave_actionPerformed(ActionEvent e) {
		btnSave_actionPerformed(null);
	}
        //根据Tab页的索引号获取相应的Tab页
	private EditorTabPage getTabPageByIndex(int index) {
		if(index<0 || index >TabControl.getTabCount()) {
			return null;
		}
		else {
			EditorTabPage et=(EditorTabPage)TabControl.getComponentAt(index);
			return et;
		}
	}
        //菜单栏“全部保存”菜单项事件处理        
	public void mnuSaveAll_actionPerformed(ActionEvent e) {

		int count = TabControl.getTabCount();
		for (int i = 0; i < count; i++) {
			EditorTabPage page = getTabPageByIndex(i);
			if (page != null) {
				if (page.getIsDocumentChanged()) {
					lblStatus.setText("正在保存文件......");
					page.SaveDocument();
					lblStatus.setText("准备就绪");
				}
			}
		}
	}
        //菜单栏“另存为”菜单项事件处理
	public void mnuSaveAs_actionPerformed(ActionEvent e) {
		EditorTabPage page = getCurrentPage();
		if (page != null) {
			if (page.getIsDocumentChanged()) {
				lblStatus.setText("正在另存为文件......");
				page.SaveAsDocument();
				lblStatus.setText("准备就绪");
			}
		}
	}
        //菜单栏“退出”菜单项事件处理
	public void mnuExit_actionPerformed(ActionEvent e) {
		this.this_WindowClosing(null);
	}
        //菜单栏“撤销”菜单项事件处理
	public void mnuUndo_actionPerformed(ActionEvent e) {
		btnUndo_actionPerformed(null);
	}
        //菜单栏“重做”菜单项事件处理
	public void mnuRedo_actionPerformed(ActionEvent e) {
		btnRedo_actionPerformed(null);
	}
        //菜单栏“剪切”菜单项事件处理
	public void mnuCut_actionPerformed(ActionEvent e) {
		btnCut_actionPerformed(null);
	}
        //菜单栏“复制”菜单项事件处理
	public void mnuCopy_actionPerformed(ActionEvent e) {
		btnCopy_actionPerformed(null);
	}
        //菜单栏“粘贴”菜单项事件处理
	public void mnuPaste_actionPerformed(ActionEvent e) {
		btnPaste_actionPerformed(null);
	}
        //菜单栏“全选”菜单项事件处理
	public void mnuSelectAll_actionPerformed(ActionEvent e) {
		EditorTabPage page = getCurrentPage();
		if (page != null) {
			page.SelectAll();
		}
	}
        //菜单栏“全部清空”菜单项事件处理
	public void mnuClear_actionPerformed(ActionEvent e) {
		EditorTabPage page = getCurrentPage();
		if (page != null) {
			page.DeleteAll();
		}
	}
        //菜单栏“字体”菜单项事件处理
	public void mnuFont_actionPerformed(ActionEvent e) {
		btnFont_actionPerformed(null);
	}
        //菜单栏“字体颜色”菜单项事件处理
	public void mnuFontColor_actionPerformed(ActionEvent e) {
		btnFontColor_actionPerformed(null);
	}
        //菜单栏“背景颜色”菜单项事件处理
	public void mnuBackColor_actionPerformed(ActionEvent e) {
		EditorTabPage page = getCurrentPage();
		if (page == null) {
			return;
		}
		Color color = getChooseColor(page.getFontColor());
		page.setBackColor(color);
	}
        //菜单栏“插入日期和时间”菜单项事件处理
	public void mnuInsertDateTime_actionPerformed(ActionEvent e) {
		this.btnDateTime_actionPerformed(null);
	}
        //菜单栏“状态栏”菜单项事件处理
	public void mnuStatus_actionPerformed(ActionEvent e) {
		if (mnuStatus.isSelected()) {
			lblStatus.setVisible(true);
		} 
                else {
			lblStatus.setVisible(false);
		}
	}

	private void SetLookAndStyle(String style) {//设置界面外观
		try {
			UIManager.setLookAndFeel(style);
			this.repaint();
		} 
                catch (Exception ex) {
			guiLook = LookAndFell.System;
			JOptionPane.showMessageDialog(null, "界面样式应用失败! 将采用Java默认外观!");
		}
	}
        //菜单栏“Java默认外观”菜单项事件处理
	public void mnuMetal_actionPerformed(ActionEvent e) {
		guiLook = LookAndFell.Meta;
		SetLookAndStyle("javax.swing.plaf.metal.MetalLookAndFeel");
	}
        //菜单栏“JavaCDE外观”菜单项事件处理
	public void mnuCDE_actionPerformed(ActionEvent e) {
		guiLook = LookAndFell.CDE;
		SetLookAndStyle("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
	}
        //菜单栏“WindowsXP外观”菜单项事件处理
	public void mnuWindowsXP_actionPerformed(ActionEvent e) {
		guiLook = LookAndFell.WinXP;
		SetLookAndStyle("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
	}
        //菜单栏“Windows经典外观”菜单项事件处理
	public void mnuWindowsClass_actionPerformed(ActionEvent e) {
		guiLook = LookAndFell.WinClass;
		SetLookAndStyle("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
	}

	// “标签位置”事件处理
	ActionListener tabPosion = new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			JMenuItem item = (JMenuItem) e.getSource();
		}
	};
        //菜单栏“关于”菜单项事件处理
	public void mnuAbout_actionPerformed(ActionEvent e) {
		btnAbout_actionPerformed(null);
	}
        //“打开窗口”事件处理
	public void this_windowOpened(WindowEvent e) {
		this.repaint();
	}
        //“关闭窗口”事件处理
	public void this_WindowClosing(WindowEvent e) {
		this.mnuCloseAll_actionPerformed(null);
		System.exit(0); 
	}
}

class MultiPageEditor_this_windowAdapter extends WindowAdapter {//侦听窗口事件
	private MultiPageEditor adaptee;
	MultiPageEditor_this_windowAdapter(MultiPageEditor adaptee) {
		this.adaptee = adaptee;
	}

	public void windowOpened(WindowEvent e) {
		adaptee.this_windowOpened(e);
	}

	public void windowClosing(WindowEvent e) {
		adaptee.this_WindowClosing(e);
	}
}
//侦听“关于”菜单项动作事件
class MultiPageEditor_mnuAbout_actionAdapter implements ActionListener {
	private MultiPageEditor adaptee;

	MultiPageEditor_mnuAbout_actionAdapter(MultiPageEditor adaptee) {
		this.adaptee = adaptee;
	}

	public void actionPerformed(ActionEvent e) {
		adaptee.mnuAbout_actionPerformed(e);
	}
}
//侦听“Windows经典外观”菜单项动作事件
class MultiPageEditor_mnuWindowsClass_actionAdapter implements ActionListener {
	private MultiPageEditor adaptee;

	MultiPageEditor_mnuWindowsClass_actionAdapter(MultiPageEditor adaptee) {
		this.adaptee = adaptee;
	}

	public void actionPerformed(ActionEvent e) {
		adaptee.mnuWindowsClass_actionPerformed(e);
	}
}
//侦听“WindowsXP外观”菜单项动作事件
class MultiPageEditor_mnuWindowsXP_actionAdapter implements ActionListener {
	private MultiPageEditor adaptee;

	MultiPageEditor_mnuWindowsXP_actionAdapter(MultiPageEditor adaptee) {
		this.adaptee = adaptee;
	}

	public void actionPerformed(ActionEvent e) {
		adaptee.mnuWindowsXP_actionPerformed(e);
	}
}
//侦听“Java CDE外观”菜单项动作事件
class MultiPageEditor_mnuCDE_actionAdapter implements ActionListener {
	private MultiPageEditor adaptee;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -