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

📄 notepadjframe.java

📁 Java版记事本 作者:黎明你好 版本:2.0 基本功能: 1.文件的打开
💻 JAVA
字号:
package notepad.firstGUI;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.UIManager;
import notepad.listener.SetJFrameListener;
import notepad.logic.MenuLogic;

/**
 * 类名Notepad<BR>
 * 记事本的主类。<BR>
 * 组件包括菜单,工具箱,鼠标右键。<BR>
 * 
 * @version 2.0 2009-4-27<BR>
 * 
 * @author 黎明你好
 */
public class NotepadJFrame extends JFrame implements ActionListener,
		SetJFrameListener, MouseListener
{
	/** 序列化时为了保持版本的兼容性 */
	private static final long serialVersionUID = 1L;
	/** 中心文本区 */
	private JTextArea textArea;
	/** 用来显示被选文件的绝对路径 */
	private JTextField southField;
	/** 菜单条 */
	private MyMenuBar menubar;
	/** 鼠标右键弹出菜单 */
	private JPopupMenu popup;
	/** 鼠标右键 */
	private JMenuItem item_mouse_cut, item_mouse_copy, item_mouse_paste,
			item_mouse_delete, item_mouse_selectAll;
	/** 工具条 */
	private JToolBar toolBar;
	/** 工具条上的按钮 */
	private JButton newFile_button, openFile_button, saveFile_button,
			saveAsFile_button, cut_button, copy_button, paste_button,
			delete_button, selectAll_button, find_button, replace_button;

	/** 逻辑处理类 */
	MenuLogic logic;

	/**
	 * 类的构造方法
	 */
	public NotepadJFrame()
	{
		textArea = new JTextArea();
		textArea.setDragEnabled(true);
		southField = new JTextField();
		southField.setEditable(false);
		popup = new JPopupMenu();
		toolBar = new JToolBar("工具条");
		menubar = new MyMenuBar(this, textArea, southField);
		logic = menubar.getLogic();
		logic.addSetJFrameListener(this);
		textArea.addMouseListener(this);
		textArea.addCaretListener(logic);
		init_mouseRight_item();
		init_tool_button();
		toolBar.setVisible(false);// 设置工具栏开始不可见
		setJMenuBar(menubar);
		setBounds(100, 100, 700, 600);
		add(toolBar, BorderLayout.NORTH);
		add(new JScrollPane(textArea), BorderLayout.CENTER);
		add(southField, BorderLayout.SOUTH);
		setVisible(true);
		validate();
		addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent e)
			{
				exit();
			}
		});
	}

	/**
	 * 初始化,鼠标右键的相关组件
	 */
	public void init_mouseRight_item()
	{
		item_mouse_cut = new JMenuItem("剪切(T)");
		item_mouse_copy = new JMenuItem("复制(C)");
		item_mouse_paste = new JMenuItem("粘贴(P)");
		item_mouse_delete = new JMenuItem("删除(L)");
		item_mouse_selectAll = new JMenuItem("全选(A)");

		item_mouse_cut.setMnemonic(KeyEvent.VK_T);
		item_mouse_cut.setDisplayedMnemonicIndex(3);
		item_mouse_copy.setMnemonic(KeyEvent.VK_C);
		item_mouse_copy.setDisplayedMnemonicIndex(3);
		item_mouse_paste.setMnemonic(KeyEvent.VK_P);
		item_mouse_paste.setDisplayedMnemonicIndex(3);
		item_mouse_delete.setMnemonic(KeyEvent.VK_L);
		item_mouse_delete.setDisplayedMnemonicIndex(3);
		item_mouse_selectAll.setMnemonic(KeyEvent.VK_A);
		item_mouse_selectAll.setDisplayedMnemonicIndex(3);

		item_mouse_cut.addActionListener(this);
		item_mouse_copy.addActionListener(this);
		item_mouse_paste.addActionListener(this);
		item_mouse_delete.addActionListener(this);
		item_mouse_selectAll.addActionListener(this);

		popup.add(item_mouse_cut);
		popup.add(item_mouse_copy);
		popup.add(item_mouse_paste);
		popup.add(item_mouse_delete);
		popup.addSeparator();
		popup.add(item_mouse_selectAll);
		popup.setPopupSize(100, 115);
	}

	/**
	 * 初始换,工具栏上的组件
	 */
	public void init_tool_button()
	{
		newFile_button = new JButton(new ImageIcon("image/new.png"));
		openFile_button = new JButton(new ImageIcon("image/open.png"));
		saveFile_button = new JButton(new ImageIcon("image/save.png"));
		saveAsFile_button = new JButton(new ImageIcon("image/saveAs.png"));

		cut_button = new JButton(new ImageIcon("image/cut.png"));
		copy_button = new JButton(new ImageIcon("image/copy.png"));
		paste_button = new JButton(new ImageIcon("image/paste.png"));
		delete_button = new JButton(new ImageIcon("image/delete.png"));

		selectAll_button = new JButton(new ImageIcon("image/select_all.png"));
		find_button = new JButton(new ImageIcon("image/find.png"));
		replace_button = new JButton(new ImageIcon("image/replace.png"));

		newFile_button.addActionListener(this);
		openFile_button.addActionListener(this);
		saveFile_button.addActionListener(this);
		saveAsFile_button.addActionListener(this);
		cut_button.addActionListener(this);
		copy_button.addActionListener(this);
		paste_button.addActionListener(this);
		delete_button.addActionListener(this);
		selectAll_button.addActionListener(this);
		find_button.addActionListener(this);
		replace_button.addActionListener(this);

		toolBar.add(newFile_button);
		toolBar.add(openFile_button);
		toolBar.add(saveFile_button);
		toolBar.add(saveAsFile_button);
		toolBar.add(saveAsFile_button);
		toolBar.add(cut_button);
		toolBar.add(copy_button);
		toolBar.add(paste_button);
		toolBar.add(delete_button);
		toolBar.add(selectAll_button);
		toolBar.add(find_button);
		toolBar.add(replace_button);
	}

	/**
	 * 接口方法,用来改变窗口样式
	 * 
	 * @param type
	 *            样式名称
	 */
	public void changeLookAndFeel(String type)
	{
		try
		{
			if (type.equals("Windows"))
			{ // 判断来自于哪个菜单项
				UIManager.setLookAndFeel(UIManager
						.getSystemLookAndFeelClassName()); // 设置界面样式
			}
			else if (type.equals("Mac"))
			{
				UIManager
						.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
			}
			else if (type.equals("Java"))
			{
				UIManager.setLookAndFeel(UIManager
						.getCrossPlatformLookAndFeelClassName());
			}
			javax.swing.SwingUtilities.updateComponentTreeUI(this); // 更新界面
		}
		catch (Exception ex)
		{ // 捕捉错误
			ex.printStackTrace(); // 输出错误
		}
	}

	public void actionPerformed(ActionEvent e)
	{
		// 工具栏上的按钮,动作实现
		if (e.getSource() == newFile_button)// 新建
		{
			logic.newFile();
		}
		else if (e.getSource() == openFile_button)
		{
			logic.openFile();
		}
		else if (e.getSource() == saveFile_button)
		{
			logic.saveFile();
		}
		else if (e.getSource() == saveAsFile_button)
		{
			logic.saveAsFile();
		}
		else if (e.getSource() == cut_button)
		{
			textArea.cut();
		}
		else if (e.getSource() == copy_button)
		{
			textArea.copy();
		}
		else if (e.getSource() == paste_button)
		{
			textArea.paste();
		}
		else if (e.getSource() == delete_button)
		{
			logic.delete();
		}
		else if (e.getSource() == selectAll_button)
		{
			textArea.selectAll();
		}
		else if (e.getSource() == find_button)
		{
			logic.find();
		}

		// 鼠标右键的菜单中,菜单项的动作实现
		else if (e.getSource() == item_mouse_cut)// 剪切
		{
			textArea.cut();
		}
		else if (e.getSource() == item_mouse_copy)// 复制
		{
			textArea.copy();
		}
		else if (e.getSource() == item_mouse_paste)// 粘贴
		{
			textArea.paste();
		}
		else if (e.getSource() == item_mouse_delete)// 删除
		{
			logic.delete();
		}
		else if (e.getSource() == item_mouse_selectAll)// 全选
		{
			textArea.selectAll();
		}
	}
	/**监控鼠标单击,单击右键的时候,弹出菜单*/
	public void mousePressed(MouseEvent e)
	{
		if (e.getModifiers() == InputEvent.BUTTON3_MASK)
		{
			int mouseX = e.getX();
			int mouseY = e.getY();
			popup.show(textArea, mouseX, mouseY);
		}

	}

	public void mouseReleased(MouseEvent e)
	{}

	public void mouseClicked(MouseEvent e)
	{}

	public void mouseEntered(MouseEvent e)
	{}

	public void mouseExited(MouseEvent e)
	{}
	/**程序退出的方法*/
	public void exit()
	{
		logic.exit();
		dispose();
	}

	/**设置窗口风格的方法*/
	public void setToolBarVisible(boolean is)
	{
		if (is)
			toolBar.setVisible(true);
		else
			toolBar.setVisible(false);
	}
}

⌨️ 快捷键说明

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