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

📄 mainframe.java

📁 实现了Window的NotePad的功能
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
			//int x = 1+1;
			
			switch(option) {
			//确认文件保存
			case JOptionPane.YES_OPTION:	//保存文件
				//option += x-x;
				saveFile();
				break;
				
			case JOptionPane.NO_OPTION:		//放弃文件保存,关闭文件
				//option += x-x;
				this.dispose();
				break;
			case JOptionPane.CANCEL_OPTION:	//取消当前操作
				areaText.setCaretPosition(0);
				break;
			}
			
			saveFont();
		}
	}
	
	private void cut() {
		//剪切
		areaText.cut();	
		stateBarChanged();
		if(areaText.getText()=="")
			setItemEnabled(false);
		popUpMenu.setVisible(false);
	}
	
	private void copy() {
		//复制
		areaText.copy();
		//stateBarChanged();
		
		popUpMenu.setVisible(false);	
	}

	private void paste() {
		//粘贴
		areaText.paste();
		stateBarChanged();
		if(areaText.getText()!="")
			setItemEnabled(true);
		popUpMenu.setVisible(false);
	}
	
	private void search() {
		//查找
		//if(butSearch == null)
			//butSearch = new JButton("查找下一个");
		if(searchDialog == null)
			searchDialog = new SearchDialog(this, "查找", 280, 100);
		
		//添加 查找按钮的监听事件:
		searchDialog.butSearch.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {				
				searchNext(searchDialog);
			}
		});
		searchDialog.addWindowListener(new WindowAdapter() {
		});
		//按钮:取消
		searchDialog.butCancel.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				searchDialog.dispose();
				searchDialog = null;
			}
		});
		//areaText.paste();
		//stateBarChanged();
		popUpMenu.setVisible(false);
	}
	
	 void searchNext(MyDialog myDialog) {	
		String searchStr = myDialog.getTextField();
		System.out.println("search: " + searchStr);
		String desStr = areaText.getText();
		if(!myDialog.diffIsChecked())
		{
			//不 区分大小写
			desStr = desStr.toLowerCase();
			searchStr = searchStr.toLowerCase();					
		}
		textCurrentpos = desStr.indexOf(searchStr, textCurrentpos);	
		if(textCurrentpos == -1) {
			//未找到
			JOptionPane.showMessageDialog(
					myDialog, 
					"未找到\""+myDialog.getTextField()+"\"",
					"CQ.JONE", 
					JOptionPane.WARNING_MESSAGE);
		}
		else {					
			//突出查找的内容
			areaText.select(textCurrentpos, textCurrentpos+searchStr.length());
			textCurrentpos += searchStr.length();
		}
	}
	private void replace() {
		//替换

		if(replaceDialog == null)
			replaceDialog = new ReplaceDialog(this, "替换", 300, 160);//new ReplaceDialog(this, "替换", 260, 160);
		
		//添加 查找按钮的监听事件:
		replaceDialog.butSearch.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				searchNext(replaceDialog);				
			}
		});
		
		//按钮:替换
		replaceDialog.butReplace.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String selectedText = areaText.getSelectedText();
				if(selectedText == null)
					selectedText="";
				if(selectedText.equals("")) {
					searchNext(replaceDialog);	
				}
				else {
					if(textCurrentpos != -1) {
						//替换当前选中的内容
						areaText.replaceSelection(replaceDialog.getTextField2());
						//查找下一个
						searchNext(replaceDialog);
						stateBarChanged();
					}
					System.out.println("selectedText: " + selectedText);
				}
				//System.out.println("selectedText: " + areaText.getSelectedText());				
			}
		});
		
		//按钮:替换所有
		replaceDialog.butReplaceAll.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				areaText.setText(areaText.getText().replaceAll(
						replaceDialog.getTextField(), 
						replaceDialog.getTextField2())
						);
				stateBarChanged();
				//replaceDialog.dispose();
				//replaceDialog = null;
			}
		});
		//按钮:取消
		replaceDialog.butCancel.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				replaceDialog.dispose();
				replaceDialog = null;
			}
		});
		popUpMenu.setVisible(false);
	}
	
	private void changeLineAuto() {
		//菜单——自动 换行
		//String autoStr = itemAutoLine.getText();
		if(areaText.getLineWrap()){	
			//若之前是自动换行,现在应该改为自动不换行
			itemAutoLine.setText("自动换行 (N)");
			areaText.setLineWrap(false);
			labelColRows.setForeground(Color.BLACK);
			//updateRowCols(0,0);
		}
		else {
			itemAutoLine.setText("自动换行 (Y)");
			labelColRows.setForeground(Color.GRAY);
			areaText.setLineWrap(true);
		}
		//isAutoLine = !isAutoLine;
	}
	 void loadLastFontSet() {
		if(fontDialog != null) {
	    	
			fontDialog.listFont.setSelectedIndex(selectedFont);
			fontDialog.listStyle.setSelectedIndex(selectedStyle);
			fontDialog.listSize.setSelectedIndex(selectedSize);
			
			fontDialog.setExampleFont();
			fontDialog.updateFiledFont();
			//fontDialog.setFieldFont(fontDialog.setFont());
		}
	}
	
	//加载字体设置文件
	 void loadFontSetFile() {
		try {
    		//打开选取的文件
			BufferedReader buf = new BufferedReader(
					new FileReader(fileFontSet));
			
			//读取文件并附加至文字编辑区
			String fontSet;
			while((fontSet = buf.readLine()) != null) {
				//System.out.println("fontSet :" + fontSet);
				String[] fs = fontSet.split("\t");
				
				selectedFont = Integer.parseInt(fs[0]);
				selectedStyle = Integer.parseInt(fs[1]);
				selectedSize = Integer.parseInt(fs[2]);
			}
			
			buf.close();		
		} catch (IOException e){
			//TODO Auto-generated catch block
			JOptionPane.showMessageDialog(null, e.toString(),
					"打开fontSet.txt文件失败", JOptionPane.ERROR_MESSAGE);
			e.printStackTrace();
		}
	}
	private void changeFont() {
		//菜单——字体 更改
		
		if(fontDialog == null) {
			fontDialog = new FontDialog(this, "字体", 310,300);
			loadLastFontSet();
			String fontStr = ""+fontDialog.getFont();
			boolean isEn = M_StringConstants.isEn(fontStr.charAt(0));
			if(!isEn) {
				//若是中文
				fontDialog.labelForExample.setText("陈求江");
			}
			else {
				fontDialog.labelForExample.setText("CcQqJj");
			}
		}
		
		//确定按钮的监听事件:
		fontDialog.butConfirm.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//searchNext(replaceDialog);	
				//改变字体
				fontChanged = true;
				
				areaText.setFont(fontDialog.getFont());
				fontDialog.setExampleFont();
				updateSelectedFont();
				//fontDialog.updateFiledFont();
				//状态栏:已修改
				//stateBarChanged();
				//保存字体设置
				saveFont();
				//关闭字体对话框
				fontDialog.dispose();
				fontDialog = null;
			}
		});
		
		//按钮:取消
		fontDialog.butCancel.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				fontDialog.dispose();
				fontDialog = null;
			}
		});
	}
	
	//更新被设置的字体
	 void updateSelectedFont() {
		if(fontDialog != null) {
			selectedFont = fontDialog.listFont.getSelectedIndex();
			selectedStyle = fontDialog.listStyle.getSelectedIndex();
			selectedSize = fontDialog.listSize.getSelectedIndex();
			
			//fontDialog.setExampleFont();
			//fontDialog.updateFiledFont();
			//fontDialog.setFieldFont(fontDialog.setFont());
		}
	}
	
	//更新当前光标所在的列,行
	  void updateRowCols(int rol, int col) {
		labelColRows.setText("行: "+rol+", 列: "+col);
	 }
	private void stateBarChanged() {
		stateBar.setText("已修改");
		stateBar.setForeground(Color.BLACK);
	}
	private void stateBarUnChanged() {
		stateBar.setText("未修改");
		stateBar.setForeground(Color.GRAY);
	}
	//在判断文件是否保存的方法上,主要是根据状态栏来进行判断
	private boolean isCurrentFileSaved() {
		//System.out.println("state.string: " + stateBar.getText());
		if(stateBar.getText().equals("未修改")){
			return true;
		}
		else
			return false;
	}
	
	private void openNew() {		
		ExampleFileFilter filter = new ExampleFileFilter();
	    filter.addExtension("txt");
	    filter.addExtension("java");
	    filter.setDescription("字符串文件");
	    chooser.setFileFilter(filter);
	    int returnVal = chooser.showOpenDialog(this);
	    if(returnVal == JFileChooser.APPROVE_OPTION) {
	    	String openFileNm = chooser.getSelectedFile().getPath();
	    	openFile(openFileNm);
	    }
	}
	
	class My_WindowAdapter extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			closeFile();						
		}
	}
	// boolean isAutoLine = true;			//自动换行 : 是 JTextArea.getLineWrap()可以获取文本区的换行策略。
	private Color selectedTextColor = Color.WHITE;	//设置用于呈现选定文本的当前颜色。
	private int width = 640;						//JFrame的初始宽,高
	private int height = 480;
	private String titleIcon = "title.gif";			//默认标题图标
	private int textCurrentpos = 0;
	
	private static int selectedFont = 0;
	private static int selectedStyle = 0;
	private static int selectedSize = 0;
	private boolean fontChanged = false;
	private String fileFontSet = "fontSet.txt";		//保存字体设置的文本文件
	private Color areaForeground = Color.DARK_GRAY;
	private Color areaBackground = Color.PINK;
	private Color caretColor = Color.YELLOW;//Color.CYAN;
	
	private JMenu menuFile;				//设置“文件”菜单
	private JMenuItem itemNew;			
	private JMenuItem itemOpen;
	private JMenuItem itemSave;
	private JMenuItem itemSaveAs;
	private JMenuItem itemClose;
	
	private JMenu menuEdit;				//设置“编辑”菜单
	private JMenuItem itemCut;
	private JMenuItem itemCopy;
	private JMenuItem itemPaste;
	private JMenuItem itemSearch;
	private JMenuItem itemReplace;
	
	private JMenu menuFormat;			//设置“字体”菜单
	private JMenuItem itemAutoLine;		//自动换行
	private JMenuItem itemFont;			//字体
	
	private JMenu menuSetting;			//设置“设置”菜单
	private JMenu itemForeground;	//文本区:前景着色
	private JMenuItem itemBackground;	//文本区:背景着色
	private JMenuItem itemCaretColor;	//光标着色
	
	private JMenu menuHelp;				//设置“帮助”菜单
	private JMenuItem itemAbout;
	private JMenuItem itemHelp;
	
	private JTextArea areaText;			//设置文本编辑区域
	
	private JLabel stateBar;				//状态栏
	private JLabel labelColRows;			
	
	private JPopupMenu popUpMenu;
	
	private JFileChooser chooser;
	
	private static SearchDialog searchDialog = null;	//查找对话框
	private static ReplaceDialog replaceDialog = null;	//查找对话框
	private static FontDialog fontDialog = null;		//字体对话框
}

⌨️ 快捷键说明

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