📄 frametest.java
字号:
/*************************************************************************************
* 类名: FrameTest
*
* 功能: 此类为主程序类,负责生成编辑器的界面,包括菜单区,用户编辑区
*
**************************************************************************************/
package edit.com;
import java.awt.*;
import java.awt.print.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import javax.swing.undo.*;
public class FrameTest extends JFrame
{
private Container content;
private JMenuBar menuBar;
private JMenu[] menus = new JMenu[4];
private JMenuItem[] fileItems = new JMenuItem[7];//”file"下拉菜单中的菜单项
private JMenuItem[] editItems = new JMenuItem[9];//”edit"下拉菜单中的菜单项
private JMenuItem[] viewItems = new JMenuItem[4];//”view"下拉菜单中的菜单项
private JMenuItem helpItem;//"help"下拉菜单中的菜单项
private EditArea editArea; //用户编辑区
private FrameTestState state = new FrameTestState();//存储此类的状态数据
private FrameTestTools tool = new FrameTestTool(); //工具类
private FrameTestDialogs dialogs = new FrameTestDialogs();//各种弹出对话框的封装
public FrameTest() {
setSize( 600 , 400 );
setLocation( 100 , 100 );
setResizable( false );
addWindowListener( new WindowAdapter(){
public void windowClosing( WindowEvent w ) {
tool.sysExit( state , FrameTest.this, editArea );
System.exit( 0 );
}
});
content = getContentPane();
content.setLayout( new BorderLayout( ) );
menuBar = new JMenuBar();
//“file"下拉菜单菜单项的生成
String[] fileItemText = { "new" , "open" , "close" , "save" ,
"save as..." , "print" , "exit" };
menus[0] = new JMenu( "File" );
menus[0].setMnemonic( 'F' );
fileItems = tool.addItemToMenu( fileItemText );
tool.addToFileMenu( menus[0], fileItems, menuBar );
//”edit"下拉菜单菜单项的生成
String[] editItemText= { "undo" , "cut" , "copy" , "paste" ,
"delete" , "find" , "replace" , "goto" , "selectAll" };
menus[1] = new JMenu( "Edit" );
menus[1].setMnemonic( 'E' );
editItems = tool.addItemToMenu( editItemText );
tool.addToEditMenu( menus[1] , editItems , menuBar );
//“view"下拉菜单菜单项的生成
String[] viewItemText = { "font" , "color" , "wordWrap" , "selectAll" };
menus[2] = new JMenu( "View" );
menus[2].setMnemonic( 'V' );
viewItems = tool.addItemToMenu( viewItemText );
tool.addToViewMenu( menus[2] , viewItems , menuBar );
//”help"下拉菜单菜单项的生成
menus[3] = new JMenu( "Help" );
menus[3].setMnemonic( 'H' );
helpItem = new JMenuItem( new FrameTestHelpItemAction( "about" ,
"about".toCharArray() ) );
tool.addToHelpMenu( menus[3] , helpItem , menuBar );
setJMenuBar( menuBar );
//“用户编辑区”的生成
editArea = new EditArea( 20 , 20 );
editArea.addKeyListener(
new FrameTestTextKeyListener( editArea,
editItems,
tool,
state,
dialogs ) );
editArea.getDocument().addUndoableEditListener( state.getUndoableEditListener() );
JScrollPane scrollPane = new JScrollPane();
JViewport port = scrollPane.getViewport();
port.add( editArea );
content.add( scrollPane , BorderLayout.CENTER );
state.setUndoableEditListener( new UndoHandler() );
//向菜单项中添加监听器
tool.addListenerToItems( viewItems ,
new FrameTestViewItemAction( viewItems,
editArea,
state,
tool,
FrameTest.this,
dialogs )
);
tool.addListenerToItems( editItems,
new FrameTestEditItemAction( editItems,
state,
editArea,
tool,
FrameTest.this,
dialogs )
);
tool.addListenerToItems( fileItems,
new FrameTestFileItemAction( fileItems,
editItems,
tool,
editArea,
state,
FrameTest.this )
);
}
//通过实现UndoableEditListener接口实现“恢复”功能
private class UndoHandler implements UndoableEditListener {
public void undoableEditHappened( UndoableEditEvent u ) {
state.getUndoManager().addEdit( u.getEdit() );
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -