📄 mynotepad.java
字号:
import java.awt.*;
import javax.swing.*;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import java.awt.event.*;
import javax.swing.border.BevelBorder;
import java.io.*;
public class MyNotePad extends JFrame implements ActionListener{
JPopupMenu popMenu = new JPopupMenu();
JMenuBar mb=new JMenuBar();
JMenu file=new JMenu("文件(F)");
JMenuItem minew=new JMenuItem("新建");
JMenuItem miopen=new JMenuItem("打开");
JMenuItem misave=new JMenuItem("保存");
JMenuItem misaveas=new JMenuItem("另存为");
JMenuItem miexit=new JMenuItem("退出");
JMenuItem minew1=new JMenuItem("新建");
JMenuItem miopen1=new JMenuItem("打开");
JMenuItem misave1=new JMenuItem("保存");
JMenuItem misaveas1=new JMenuItem("另存为");
JMenuItem miexit1=new JMenuItem("退出");
JMenu edit=new JMenu("编辑(E)");
JMenuItem micut=new JMenuItem("剪切(x)");
JMenuItem micopy=new JMenuItem("复制(c)");
JMenuItem mipaste=new JMenuItem("粘贴(v)");
JMenu format=new JMenu("格式(O)");
JMenuItem mifont=new JMenuItem("字体");
JMenuItem mileft=new JMenuItem("左对齐");
JMenuItem miright=new JMenuItem("右对齐");
JMenuItem micenter=new JMenuItem("居中对齐");
JMenuItem mibold=new JMenuItem("加粗");
JMenuItem mii=new JMenuItem("斜体");
JMenuItem mino=new JMenuItem("无特殊样式");
JMenu help=new JMenu("帮助(H)");
JMenuItem mia=new JMenuItem("About");
JToolBar tb=new JToolBar();
JButton bnew=new JButton(new ImageIcon("imgs/New.png"));
JButton bopen=new JButton(new ImageIcon("imgs/Open.png"));
JButton bsave=new JButton(new ImageIcon("imgs/Save.png"));
JButton bcut=new JButton(new ImageIcon("imgs/Cut.png"));
JButton bcopy=new JButton(new ImageIcon("imgs/Copy.png"));
JButton bpaste=new JButton(new ImageIcon("imgs/Paste.png"));
JButton bexit=new JButton(new ImageIcon("imgs/Exit.png"));
JFileChooser jfc=new JFileChooser();
int result=0;
JTextPane tp=new JTextPane();
public MyNotePad()
{
super("我的记事本");
Container c=this.getContentPane();
mb.add(file);
buildMenufile();
buildMenuedit();
mb.add(edit);
buildMenuformat();
mb.add(format);
buildHelp();
mb.add(help);
this.setJMenuBar(mb);
buildToolBar();
c.add(tb,BorderLayout.NORTH);
JScrollPane sp = new JScrollPane(tp);
tp.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
tp.setFont(new Font("Arial", Font.PLAIN, 16));
c.add(sp);
popMenu.add(miopen);
popMenu.add(misave);
popMenu.add(misaveas);
popMenu.add(miexit);
minew.addActionListener(this);
miopen.addActionListener(this);
misave.addActionListener(this);
misaveas.addActionListener(this);
misaveas1.addActionListener(this);
minew1.addActionListener(this);
miopen1.addActionListener(this);
misave1.addActionListener(this);
tp.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) {
if(e.getButton()==MouseEvent.BUTTON3){
popMenu.show(tp,e.getX(),e.getY());
}
}
});
this.setBounds(300,300,600,450);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e){
File f=null;
BufferedWriter writer=null;
if(e.getSource()==miopen||e.getSource()==miopen1){
result=jfc.showOpenDialog(this);
tp.setText("");
if(result==jfc.APPROVE_OPTION){
f=jfc.getSelectedFile();
try{
System.out.println(f.getPath());
tp.setPage("file:"+f.getPath());
}catch(IOException ee){
}
}
}
if(e.getSource()==misave||e.getSource()==misave1){
result=jfc.showSaveDialog(this);
if(result==JFileChooser.APPROVE_OPTION){
f=jfc.getSelectedFile();
try{
writer=new BufferedWriter(new FileWriter(f));
writer.write(tp.getText());
}catch(IOException ee){
ee.printStackTrace();
}finally{
try{
if(writer!=null)
writer.close();
}catch(Exception pe){
}
}
}
}
if(e.getSource()==misaveas||e.getSource()==misaveas1){
result=jfc.showSaveDialog(this);
if(result==JFileChooser.APPROVE_OPTION){
f=jfc.getSelectedFile();
try{
writer=new BufferedWriter(new FileWriter(f));
writer.write(tp.getText());
}catch(IOException ee){
ee.printStackTrace();
}finally{
try{
if(writer!=null)
writer.close();
}catch(Exception pe){
}
}
}
}
if(e.getSource()==minew||e.getSource()==minew1){
ExitDialog1 ed=new ExitDialog1(MyNotePad.this);
ed.setVisible(true);
if(ed.getExit()){
result=jfc.showSaveDialog(this);
if(result==JFileChooser.APPROVE_OPTION){
f=jfc.getSelectedFile();
try{
writer=new BufferedWriter(new FileWriter(f));
writer.write(tp.getText());
}catch(IOException ee){
ee.printStackTrace();
}finally{
try{
if(writer!=null)
writer.close();
}catch(Exception pe){
}
}
}
}
else
return;
}
}
public void buildMenufile()
{
file.setMnemonic('F');
file.add(minew1);
file.add(miopen1);
file.add(misave1);
file.add(misaveas1);
file.add(miexit1);
miexit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
ExitDialog ed=new ExitDialog(MyNotePad.this);
ed.setVisible(true);
if(ed.getExit())
System.exit(0);
else
return;
}});
}
public void buildMenuedit()
{
edit.setMnemonic('E');
micut.setMnemonic('x' );
micopy.setMnemonic('c');
mipaste.setMnemonic('v');
edit.add(micut);
micut.addActionListener(new Cut());
edit.add(micopy);
micopy.addActionListener(new Copy());
edit.add(mipaste);
mipaste.addActionListener(new Paste());
}
public void buildMenuformat()
{
format.setMnemonic('O');
format.add(mifont);
FontHandle fd=new FontHandle(this);
mifont.addActionListener(fd);
format.addSeparator();
format.add(mileft);
mileft.addActionListener(new LeftAttribute());
format.add(micenter);
micenter.addActionListener(new CenterAttribute());
format.add(miright);
miright.addActionListener(new RightAttribute());
format.addSeparator();
format.add(mibold);
mibold.addActionListener(new SetBold());
format.add(mii);
mii.addActionListener(new SetItalic());
format.add(mino);
mino.addActionListener(new SetPlain());
}
public void buildHelp()
{
help.setMnemonic('H');
help.add(mia);
mia.addActionListener(new HelpDialog(this));
}
public void buildToolBar()
{
bnew.setToolTipText("新建");
bopen.setToolTipText("打开");
bsave.setToolTipText("保存");
bcut.setToolTipText("剪切");
bcopy.setToolTipText("复制");
bpaste.setToolTipText("粘贴");
bexit.setToolTipText("退出");
tb.add(bnew);
tb.add(bopen);
tb.add(bsave);
tb.addSeparator();
tb.add(bcut);
bcut.addActionListener(new Cut());
tb.add(bcopy);
bcopy.addActionListener(new Copy());
tb.add(bpaste);
bpaste.addActionListener(new Paste());
tb.addSeparator();
tb.add(bexit);
bexit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
ExitDialog ed=new ExitDialog(MyNotePad.this);
ed.setVisible(true);
if(ed.getExit())
System.exit(0);
else
return;}});
tb.setFloatable(false);
}
class LeftAttribute implements ActionListener{
public void actionPerformed(ActionEvent e){
SimpleAttributeSet attr=new SimpleAttributeSet();
StyleConstants.setAlignment(attr, StyleConstants.ALIGN_LEFT);
tp.setParagraphAttributes(attr, false);
}
}
class CenterAttribute implements ActionListener{
public void actionPerformed(ActionEvent e){
SimpleAttributeSet attr=new SimpleAttributeSet();
StyleConstants.setAlignment(attr,StyleConstants.ALIGN_CENTER);
tp.setParagraphAttributes(attr,false);
}
}
class RightAttribute implements ActionListener{
public void actionPerformed(ActionEvent e){
SimpleAttributeSet attr=new SimpleAttributeSet();
StyleConstants.setAlignment(attr,StyleConstants.ALIGN_RIGHT);
tp.setParagraphAttributes(attr,false);
}
}
class SetBold implements ActionListener{
public void actionPerformed(ActionEvent e){
SimpleAttributeSet attr=new SimpleAttributeSet();
StyleConstants.setBold(attr,true);
tp.setCharacterAttributes(attr, false);
}
}
class SetItalic implements ActionListener{
public void actionPerformed(ActionEvent e){
SimpleAttributeSet attr=new SimpleAttributeSet();
StyleConstants.setItalic(attr,true);
tp.setCharacterAttributes(attr,false);
}
}
class SetPlain implements ActionListener{
public void actionPerformed(ActionEvent e){
SimpleAttributeSet attr=new SimpleAttributeSet();
StyleConstants.setBold(attr,false);
StyleConstants.setItalic(attr,false);
tp.setCharacterAttributes(attr,false);
}
}
class Cut implements ActionListener{
public void actionPerformed(ActionEvent e){
tp.cut();
}
}
class Paste implements ActionListener{
public void actionPerformed(ActionEvent e ){
tp.paste();
}
}
class Copy implements ActionListener{
public void actionPerformed(ActionEvent e){
tp.copy();
}
}
class HelpDialog extends JDialog implements ActionListener
{
MyNotePad nt;
public HelpDialog(MyNotePad nt)
{
super(nt,"关于我的记事本",true);
Container c=this.getContentPane();
JLabel jl=new JLabel("我的记事本version 1.0",JLabel.CENTER);
c.add(jl,BorderLayout.CENTER);
this.setBounds(500,300,300,150);
this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
}
public void actionPerformed(ActionEvent e)
{
new HelpDialog(nt);
this.setVisible(true);
}
}
public static void main(String args[])
{
new MyNotePad();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -