📄 multipageeditor.java
字号:
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 + -