📄 notepadjframe.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 + -