博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java记事本
阅读量:6811 次
发布时间:2019-06-26

本文共 19388 字,大约阅读时间需要 64 分钟。

新知识点

1.撤销

textArea添加一个实现监听接口的类(添加了之后可以一直监视着添加的删除的情况,以便来撤销

textArea.getDocument().addUndoableEditListener(                new UndoableEditListener() {                    public void undoableEditHappened(UndoableEditEvent e) {                        undoManager.addEdit(e.getEdit());                        updateButtons();                    }                });

再弄一个管理监听的类,可以撤销和恢复

 UndoManager undoManager = new UndoManager();

undoButton.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                try {                    undoManager.undo();                } catch (CannotRedoException cre) {                    cre.printStackTrace();                }                updateButtons();            }        });        redoButton.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                try {                    undoManager.redo();                } catch (CannotRedoException cre) {                    cre.printStackTrace();                }                updateButtons();            }        });

2删除选中的文本

int start = text.getSelectionStart();            int end =text.getSelectionEnd();            text.replaceRange("", start, end); // 删除被选取的文本。

3设置时间格式

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式            String s=df.format(new Date());

4激活自动换行

text.setLineWrap(true);//激活自动换行功能                text.setWrapStyleWord(true);//激活断行不断字功能(有单词会跳

5设置字体

font.setAccelerator(KeyStroke.getKeyStroke('a'));//点开菜单单键font.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, InputEvent.CTRL_MASK));//使用组合键font.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, 0));//全局不用组合键

 6打包后文件路径有错

因为打包后文件路径变了,要用URL来获得资源,由于,getClass().getResource是Object类的,可以用this调用

URL url = this.getClass().getResource("/2.png");        ImageIcon addIcon = new ImageIcon(url);        about.setIcon(addIcon);

 

bug:

1选中文本换颜色不能实现

 

全部代码

package testWin;import java.awt.event.*;import java.awt.*;import javax.swing.*;import javax.swing.event.*;public class FontDialog extends JDialog implements ListSelectionListener,ActionListener {   FontFamilyNames fontFamilyNames;    int fontSize=12;    int fontStyle=0;   String fontName="宋体";   JList fontNameList,fontSizeList,fontStyleList;   Font font;   JButton yes,cancel;   static int YES=1,NO=0;   int state=-1;   FontDialog(JFrame f) {       super(f);      setTitle("字体对话框");      //font=new Font("宋体",Font.PLAIN,12);      fontFamilyNames=new FontFamilyNames();      setModal(true);//当前对话框调用setModal(boolean b)设置为有模式      //字体列表框:      String[] name=fontFamilyNames.getFontName();      fontNameList=new JList();      fontNameList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);      fontNameList.setListData(name);      fontNameList.setVisibleRowCount(8);       //设置列表框第一条被选中      fontNameList.setSelectedIndex(0);      //添加滚动条       JScrollPane p1=new JScrollPane(fontNameList);            fontNameList.addListSelectionListener(this);            //字形列表框:      String[] style={"常规                    ","粗体","斜体","粗斜体"};      fontStyleList=new JList();      fontStyleList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);      fontStyleList.setListData(style);      fontStyleList.setVisibleRowCount(8);            fontStyleList.setSelectedIndex(0);      JScrollPane p2=new JScrollPane(fontStyleList);        fontStyleList.addListSelectionListener(this);                    //大小列表框:      String[] size={"8        ","10","12","14","16","18","20","22","24","26","28","30","32"};      fontSizeList=new JList();      fontSizeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);      fontSizeList.setListData(size);      fontSizeList.setVisibleRowCount(8);      fontSizeList.setSelectedIndex(0);      JScrollPane p3=new JScrollPane(fontSizeList);        fontSizeList.addListSelectionListener(this);             JPanel listPanel=new JPanel();      listPanel.add(p1);      listPanel.add(p2);      listPanel.add(p3);       add(listPanel,BorderLayout.NORTH);                  yes=new JButton("确定");            cancel=new JButton("取消");        yes.addActionListener(this);      cancel.addActionListener(this);      JPanel pSouth=new JPanel();      pSouth.add(yes);       pSouth.add(cancel);      add(pSouth,BorderLayout.SOUTH);               setBounds(250,150,400,250);      setDefaultCloseOperation(DISPOSE_ON_CLOSE);      validate();   }   public void valueChanged(ListSelectionEvent e){      if(e.getSource()==fontNameList) {              fontName=(String)fontNameList.getSelectedValue();      }      else if(e.getSource()==fontStyleList) {          fontStyle=fontStyleList.getSelectedIndex();                      }      else if(e.getSource()==fontSizeList) {              String s=(String)fontSizeList.getSelectedValue();         fontSize=Integer.parseInt(s.trim());     }      font=new Font(fontName,fontStyle,fontSize);            validate();   }   public void actionPerformed(ActionEvent e) {      if(e.getSource()==yes) {          state=YES;            setVisible(false);       //对话框设置为不可见      }      else if(e.getSource()==cancel) {         state=NO;           setVisible(false);      }   }   public int getState() {      return state;   }   public Font getFont() {      return font;   }}
View Code
package testWin;import java.awt.GraphicsEnvironment;public class FontFamilyNames {    String allFontNames[];    public String [] getFontName() {      GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();      allFontNames=ge.getAvailableFontFamilyNames();      return allFontNames;    }}
View Code
package testWin;import java.awt.Color;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.*;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import javax.swing.*;import javax.swing.filechooser.FileNameExtensionFilter;import javax.swing.undo.UndoManager;public class Polish implements ActionListener{    JFileChooser file1=new JFileChooser();    FileNameExtensionFilter filter=new FileNameExtensionFilter("txt文件","txt");//文件名过滤    private JTextArea text;    private int huanhang=0;//换行参数    UndoManager undoManager;    private JFrame frame;    void setFrame(JFrame a){        frame=a;    }    void setText(JTextArea a){        text=a;    }    void setUnodManager(UndoManager a){        undoManager=a;    }    @Override    public void actionPerformed(ActionEvent e) {        // TODO 自动生成的方法存根        if(e.getActionCommand().equals("撤销")){            undoManager.undo();        }else if(e.getActionCommand().equals("剪贴")){            text.cut();        }else if(e.getActionCommand().equals("复制")){            text.copy();        }else if(e.getActionCommand().equals("粘贴")){            text.paste();        }else if(e.getActionCommand().equals("删除")){            int start = text.getSelectionStart();            int end =text.getSelectionEnd();            text.replaceRange("", start, end); // 删除被选取的文本。//            String s=text.getText();   方法2//            String a=text.getSelectedText();//            text.setText(s.replace(a,""));        }else if(e.getActionCommand().equals("全选")){            text.selectAll();        }else if(e.getActionCommand().equals("时间/日期")){            Calendar calendar=Calendar.getInstance();            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式            String s=df.format(new Date());            text.append(s);        }else if(e.getActionCommand().equals("自动换行")){            if(huanhang%2==0){                text.setLineWrap(true);//激活自动换行功能                text.setWrapStyleWord(true);//激活断行不断字功能(有单词会跳            }else{                text.setLineWrap(false);                text.setWrapStyleWord(false);            }            huanhang++;        }else if(e.getActionCommand().equals("颜色")){            Color color2=new Color(120,30,0);            Color color1=JColorChooser.showDialog(frame,"color",color2);            text.setForeground(color1);            text.setSelectedTextColor(color1);//            JColorChooser   jc=new   JColorChooser();   //            Color color3=jc.showDialog(null,"zb",color2); //            text.setSelectedTextColor(color3);        }else if(e.getActionCommand().equals("字体")){            FontDialog dialog1=new FontDialog(frame);            dialog1.setVisible(true);            Font font1=dialog1.getFont();            text.setFont(font1);        }else if(e.getActionCommand().equals("关于笔记本")){            JOptionPane.showMessageDialog(frame, "2015118043,黄煜成,2016/11/17完成");        }else if(e.getActionCommand().equals("打开")){            file1.setFileFilter(filter);//过滤下            int state=file1.showOpenDialog(frame);            if(state==JFileChooser.APPROVE_OPTION){                try{                    File dir=file1.getSelectedFile();                    FileReader fileReader=new FileReader(dir);                    BufferedReader in1=new BufferedReader(fileReader);                    text.setText(null);                    String s=null;                    for(;(s=in1.readLine())!=null;){                        text.append(s+"\n");                    }                    in1.close();                    fileReader.close();                }                catch(Exception e1){                    System.out.println(e1.getMessage());                }            }        }else if(e.getActionCommand().equals("另存为")){            file1.setFileFilter(filter);//过滤下            int state=file1.showSaveDialog(frame);//显示出保存框            if(state==JFileChooser.APPROVE_OPTION){                try{                    File dir=file1.getCurrentDirectory();//得到保存路径                    String name=file1.getSelectedFile().getName();//得到选择的的名字                    File file=new File(dir,name);                    FileWriter fileWriter=new FileWriter(file);                    BufferedWriter out1=new BufferedWriter(fileWriter);                    out1.write(text.getText());                    out1.close();                    fileWriter.close();                }                catch(IOException e3){                    System.out.println(e3.getMessage());                }             }        }        else if(e.getActionCommand().equals("新建")){            int n = 0;            if(text.getText()!="")                n=JOptionPane.showConfirmDialog(frame, "是否保存");            if(n==JOptionPane.YES_OPTION){                file1.setFileFilter(filter);//过滤下                int state=file1.showSaveDialog(frame);//显示出保存框                if(state==JFileChooser.APPROVE_OPTION){                    try{                        File dir=file1.getCurrentDirectory();//得到保存路径                        String name=file1.getSelectedFile().getName();//得到选择的的名字                        File file=new File(dir,name);                        FileWriter fileWriter=new FileWriter(file);                        BufferedWriter out1=new BufferedWriter(fileWriter);                        out1.write(text.getText());                        out1.close();                        fileWriter.close();                    }                    catch(IOException e3){                        System.out.println(e3.getMessage());                    }                 }            }            else if(n==JOptionPane.NO_OPTION){                text.setText(null);            }        }else if(e.getActionCommand().equals("退出")){            System.exit(0);        }else if(e.getActionCommand().equals("保存")){            System.out.println("1111");            File file1=new File ("新建保存文件.txt");            if(!file1.exists())                try {                    file1.createNewFile();                } catch (IOException e1) {                    e1.printStackTrace();                }            try{                FileWriter fileWriter=new FileWriter(file1);                BufferedWriter out1=new BufferedWriter(fileWriter);                out1.write(text.getText());                out1.close();                fileWriter.close();            }            catch(Exception e5){                System.out.println(e5.getMessage());            }        }    }}
View Code
package testWin;import java.awt.BorderLayout;import java.awt.EventQueue;import java.awt.Image;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;import java.io.IOException;import java.net.URL;import javax.imageio.ImageIO;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.KeyStroke;import javax.swing.border.EmptyBorder;import javax.swing.undo.UndoManager;public class Text extends JFrame {    private JPanel contentPane;    JTextArea textArea = new JTextArea();    UndoManager undoManager = new UndoManager();    /**     * Launch the application.     */    public static void main(String[] args) {        EventQueue.invokeLater(new Runnable() {            public void run() {                try {                    Text frame = new Text();                    frame.setVisible(true);                } catch (Exception e) {                    e.printStackTrace();                }            }        });    }    /**     * Create the frame.     */    public Text() {        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        setBounds(100, 100, 681, 570);                JMenuBar menuBar = new JMenuBar();        setJMenuBar(menuBar);                JMenu file = new JMenu("\u6587\u4EF6");        menuBar.add(file);                JMenuItem newFile = new JMenuItem("\u65B0\u5EFA");        newFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));        file.add(newFile);                JMenuItem openFile = new JMenuItem("\u6253\u5F00");        openFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));        file.add(openFile);                JMenuItem saveFile = new JMenuItem("\u4FDD\u5B58");        saveFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));        file.add(saveFile);                JMenuItem save2File = new JMenuItem("\u53E6\u5B58\u4E3A");        save2File.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_M, InputEvent.CTRL_MASK));        file.add(save2File);                JMenuItem print = new JMenuItem("\u6253\u5370");        print.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_MASK));        file.add(print);                JMenuItem close = new JMenuItem("\u9000\u51FA");        close.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));        file.add(close);                JMenu menu = new JMenu("\u7F16\u8F91");        menuBar.add(menu);                JMenuItem revoke = new JMenuItem("\u64A4\u9500");        revoke.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_MASK));        menu.add(revoke);                JMenuItem clip = new JMenuItem("\u526A\u8D34");        clip.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_MASK));        menu.add(clip);                JMenuItem copy = new JMenuItem("\u590D\u5236");        copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK));        menu.add(copy);                JMenuItem paste = new JMenuItem("\u7C98\u8D34");        paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK));        menu.add(paste);                JMenuItem delete = new JMenuItem("\u5220\u9664");        delete.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_MASK));        menu.add(delete);                JMenuItem selectAll = new JMenuItem("\u5168\u9009");        selectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK));        menu.add(selectAll);                JMenuItem date = new JMenuItem("\u65F6\u95F4/\u65E5\u671F");        menu.add(date);                JMenu format = new JMenu("\u683C\u5F0F");        menuBar.add(format);                JMenuItem autoNextLine = new JMenuItem("\u81EA\u52A8\u6362\u884C");        autoNextLine.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, InputEvent.CTRL_MASK));        format.add(autoNextLine);                JMenuItem font = new JMenuItem("\u5B57\u4F53");        font.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B, InputEvent.CTRL_MASK));        format.add(font);                JMenuItem color = new JMenuItem("\u989C\u8272");        format.add(color);                JMenu help = new JMenu("\u5E2E\u52A9");        menuBar.add(help);                JMenuItem about = new JMenuItem("\u5173\u4E8E\u7B14\u8BB0\u672C");        about.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK));                URL url = this.getClass().getResource("/2.png");        ImageIcon addIcon = new ImageIcon(url);        about.setIcon(addIcon);                help.add(about);        contentPane = new JPanel();        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));        contentPane.setLayout(new BorderLayout(0, 0));        setContentPane(contentPane);                JScrollPane scrollPane = new JScrollPane();        contentPane.add(scrollPane, BorderLayout.CENTER);                scrollPane.setViewportView(textArea);                Polish polish1=new Polish();//锟斤拷锟斤拷锟斤拷        UndoPolish undo=new UndoPolish();//锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷        textArea.getDocument().addUndoableEditListener(undo);//锟斤拷映锟斤拷锟斤拷锟斤拷锟�                undo.setUnodManager(undoManager);        polish1.setText(textArea);        polish1.setUnodManager(undoManager);//锟斤拷锟捷癸拷锟斤拷锟斤拷        polish1.setFrame(this);                revoke.addActionListener(polish1);//锟斤拷蛹锟斤拷锟�        clip.addActionListener(polish1);        copy.addActionListener(polish1);        paste.addActionListener(polish1);        delete.addActionListener(polish1);        selectAll.addActionListener(polish1);        date.addActionListener(polish1);                autoNextLine.addActionListener(polish1);        color.addActionListener(polish1);        font.addActionListener(polish1);                about.addActionListener(polish1);                openFile.addActionListener(polish1);        save2File.addActionListener(polish1);        newFile.addActionListener(polish1);        close.addActionListener(polish1);        saveFile.addActionListener(polish1);    }        public ImageIcon getMyImage(String imageName){              ClassLoader loader = getClass().getClassLoader();              java.io.InputStream is = loader.getResourceAsStream(imageName);              Image img;              ImageIcon ii = null;              try {               img = ImageIO.read(is);               ii = new ImageIcon(img);               return ii;              } catch (IOException e) {               e.printStackTrace();              }              return ii;             }}
View Code
package testWin;import javax.swing.event.UndoableEditEvent;import javax.swing.event.UndoableEditListener;import javax.swing.undo.CannotRedoException;import javax.swing.undo.UndoManager;public class UndoPolish implements UndoableEditListener{    UndoManager undoManager;    void setUnodManager(UndoManager a){        undoManager=a;    }    @Override    public void undoableEditHappened(UndoableEditEvent e) {        // TODO 自动生成的方法存根        undoManager.addEdit(e.getEdit());    }}
View Code

 

转载于:https://www.cnblogs.com/vhyc/p/6075510.html

你可能感兴趣的文章
笔试/面试题
查看>>
angular1的复选框指令--checklistModel
查看>>
Java内存区域
查看>>
nginx+uwsgi启动Django项目
查看>>
深入理解Python中赋值、深拷贝(deepcopy)、浅拷贝(copy)
查看>>
最大岛屿-----简单的 搜索
查看>>
判断当前线程是否有管理者权限
查看>>
js 的arguments的一些理解资料
查看>>
xampp启动遇到的小问题
查看>>
python set dict tuple and list
查看>>
通过 docker 搭建自用的 gitlab 服务
查看>>
svg-写一个简单的进度条
查看>>
app 开发
查看>>
python 判断是字母的多种方法
查看>>
mstest run dll
查看>>
.net framework
查看>>
[NOI2016]优秀的拆分
查看>>
贝叶斯分类
查看>>
[hdu5628]Clarke and math(dirichlet卷积)
查看>>
day21 re模块
查看>>