zoukankan      html  css  js  c++  java
  • JDocumentEditor

    package infonode;
    
    /**
     *
     * @author sony
     */
    //JDocumentEditor.java
    import java.awt.*;
    import java.awt.event.*;
    import java.io.File;
    import java.io.IOException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.text.*;
    import javax.swing.text.html.*;
    import javax.swing.undo.*;
    
    public class JDocumentEditor extends JTextPane {
    
        UndoHandler uh = null;
        Font myFont;
        javax.swing.plaf.FontUIResource f;
    
        public JDocumentEditor() {
            this.setContentType("text/html");
            this.setFont(new Font("arial", 0, 14));
            this.setText("hey i am deepak");
            this.setDragEnabled(true);
        }
    
        public void setTextForeground(Color c) {
            MutableAttributeSet att = new SimpleAttributeSet();
            StyleConstants.setForeground(att, c);
            this.setCharacterAttributes(att, false);
        }
    
        public void setTextBackground(Color c) {
            MutableAttributeSet att = new SimpleAttributeSet();
            StyleConstants.setBackground(att, c);
            this.setCharacterAttributes(att, false);
        }
    
        public void setTextBold() {
            EditorKit styleEd = this.getEditorKit();
            if (!(styleEd instanceof StyledEditorKit)) {
                return;
            }        
            MutableAttributeSet att = ((StyledEditorKit) styleEd).getInputAttributes();
            StyleConstants.setBold(att, !StyleConstants.isBold(att));
            this.setCharacterAttributes(att, false);
            System.out.println(this.getSelectedText());
        }
    
        public void setTextItalic() {
            EditorKit styleEd = this.getEditorKit();
            if (!(styleEd instanceof StyledEditorKit)) {
                return;
            }
            MutableAttributeSet att = ((StyledEditorKit) styleEd).getInputAttributes();
            StyleConstants.setItalic(att, !StyleConstants.isItalic(att));
            this.setCharacterAttributes(att, false);
        }
    
        public void setTextUnderline() {
            EditorKit styleEd = this.getEditorKit();
            if (!(styleEd instanceof StyledEditorKit)) {
                return;
            }
            MutableAttributeSet att = ((StyledEditorKit) styleEd).getInputAttributes();
            StyleConstants.setUnderline(att, !StyleConstants.isUnderline(att));
            this.setCharacterAttributes(att, false);
        }
    
        public void setTextStrikeThrough() {
            EditorKit styleEd = this.getEditorKit();
            if (!(styleEd instanceof StyledEditorKit)) {
                return;
            }
            MutableAttributeSet att = ((StyledEditorKit) styleEd).getInputAttributes();
            StyleConstants.setStrikeThrough(att, !StyleConstants.isStrikeThrough(att));
            this.setCharacterAttributes(att, false);
        }
    
        public void setTextSuperscript() {
            EditorKit styleEd = this.getEditorKit();
            if (!(styleEd instanceof StyledEditorKit)) {
                return;
            }
            MutableAttributeSet att = ((StyledEditorKit) styleEd).getInputAttributes();
            StyleConstants.setSuperscript(att, !StyleConstants.isSuperscript(att));
            this.setCharacterAttributes(att, false);
        }
    
        public void setTextSubscript() {
            EditorKit styleEd = this.getEditorKit();
            if (!(styleEd instanceof StyledEditorKit)) {
                return;
            }
            MutableAttributeSet att = ((StyledEditorKit) styleEd).getInputAttributes();
            StyleConstants.setSubscript(att, !StyleConstants.isSubscript(att));
            this.setCharacterAttributes(att, false);
        }
    
        public void setfonts() {
            try {
                EditorKit styleEd = this.getEditorKit();
                if (!(styleEd instanceof StyledEditorKit)) {
                    return;
                }
                MutableAttributeSet att = ((StyledEditorKit) styleEd).getInputAttributes();
    
                File fontFile = new File("C://Users//sony//Desktop//1131.ttf");
    
                myFont = Font.createFont(Font.TRUETYPE_FONT, fontFile).deriveFont(Font.PLAIN, 22f);
    
    
                GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
                ge.registerFont(myFont);
                System.out.println(this.getFont());
                f = new javax.swing.plaf.FontUIResource(myFont);
                System.out.println(f.getFontName());
                this.setFont(myFont);
                this.setFont(f);
                System.out.println(this.getFont());
    
    
    
                this.setCharacterAttributes(att, false);
    
    
            } catch (FontFormatException ex) {
                Logger.getLogger(JDocumentEditor.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(JDocumentEditor.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    
        public void setTextFontFamily(String fnt) {
            MutableAttributeSet att = new SimpleAttributeSet();
            StyleConstants.setFontFamily(att, fnt);
            this.setCharacterAttributes(att, false);
        }
    
        public void setTextFontSize(int size) {
            MutableAttributeSet att = new SimpleAttributeSet();
            StyleConstants.setFontSize(att, size);
            this.setCharacterAttributes(att, false);
        }
    
        public void setTextAlignment(int align) {
            MutableAttributeSet att = new SimpleAttributeSet();
            StyleConstants.setAlignment(att, align);
            this.setParagraphAttributes(att, false);
        }
    
        public void setTextIndent(float indent) {
            MutableAttributeSet att = new SimpleAttributeSet();
            StyleConstants.setFirstLineIndent(att, indent);
            this.setParagraphAttributes(att, false);
        }
    
        public void setTextSpaceAbove(float space) {
            MutableAttributeSet att = new SimpleAttributeSet();
            StyleConstants.setSpaceAbove(att, space);
            this.setParagraphAttributes(att, false);
        }
    
        public void setTextSpaceBelow(float space) {
            MutableAttributeSet att = new SimpleAttributeSet();
            StyleConstants.setSpaceBelow(att, space);
            this.setParagraphAttributes(att, false);
        }
    
        public void setTextLineSpacing(float space) {
            MutableAttributeSet att = new SimpleAttributeSet();
            StyleConstants.setLineSpacing(att, space);
            this.setParagraphAttributes(att, false);
        }
    
        public void insertHTML(String s) {
            try {            
                ((HTMLEditorKit) this.getEditorKit()).read(new java.io.StringReader(s), this.getDocument(), this.getSelectionStart());
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    
        public void insertImage(String file) {
            try {            
                ((HTMLEditorKit) this.getEditorKit()).read(new java.io.StringReader("<img src="" + file + "" />"), this.getDocument(), this.getSelectionStart());
                ImageIcon imgicon = new ImageIcon(file);
                this.insertIcon(imgicon);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    
        public void insertTable(int r, int c) {
            try {
                StringBuilder sb = new StringBuilder("<table border=1>
    ");
                for (int i = 0; i < r; i++) {
                    sb.append("<tr>");
                    for (int j = 0; j < c; j++) {
                        sb.append("<td></td>");
                    }
                    sb.append("</tr>
    ");
                }
                sb.append("</table>");
                ((HTMLEditorKit) this.getEditorKit()).read(new java.io.StringReader(sb.toString()), this.getDocument(), this.getSelectionStart());
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    
        public void setUndoRedo(AbstractButton undo, AbstractButton redo) {
            this.getDocument().addUndoableEditListener(uh = new UndoHandler(undo, redo));
        }
    
        public void undo() {
            uh.reverseEditing(false);
        }
    
        public void redo() {
            uh.reverseEditing(true);
        }
    
        public void resetUndo() {
            uh.resetUndo();
        }    
    
        class UndoHandler implements UndoableEditListener, ActionListener {
    
            private UndoManager um = null;
            private AbstractButton undo = null, redo = null;
    
            public UndoHandler(AbstractButton umi, AbstractButton rmi) {
                um = new UndoManager();
                undo = umi;
                redo = rmi;
                JDocumentEditor.this.getDocument().addUndoableEditListener(this);
                undo.addActionListener(this);
                redo.addActionListener(this);
            }
    
            public void actionPerformed(ActionEvent ae) {            
                reverseEditing(ae.getSource() == redo);            
            }
    
            public void reverseEditing(boolean r) {
                try {
                    if (r) {
                        um.redo();
                    } else {
                        um.undo();
                    }
                    refreshState();
                } catch (Exception ex) {                
                    javax.swing.JOptionPane.showMessageDialog(null,
                            "Error in " + (r ? "redo " : "undo ") + ex.toString());
                }
            }
    
            public void resetUndo() {
                um.discardAllEdits();
                undo.setEnabled(false);
                redo.setEnabled(false);
                JDocumentEditor.this.getDocument().addUndoableEditListener(this);
            }
    
            public void refreshState() {
                undo.setEnabled(um.canUndo());
                redo.setEnabled(um.canRedo());
                undo.setText(undo.isEnabled() ? um.getUndoPresentationName() : "Undo");
                redo.setText(undo.isEnabled() ? um.getRedoPresentationName() : "Redo");
            }
    
            public void undoableEditHappened(UndoableEditEvent uee) {
                try {
                    um.addEdit(uee.getEdit());
                    this.refreshState();
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        }
    
        public static void main(String a[]) {
    
            new JDocumentEditor();
            JFrame jf = new JFrame();
            jf.setVisible(true);
            JButton jb1 = new JButton("bold");
            final JTextField jfield = new JTextField("                   ");
            jf.add(jfield);
            jf.add(jb1);
            jf.setLayout(new FlowLayout());
            jb1.addActionListener(new ActionListener() {
    
                public void actionPerformed(ActionEvent e) {
                    System.out.println(jfield.getText());
                }
            });
        }
    }
    package infonode;
    
    /**
     *
     * @author sony
     */
    //DocumentTest.java
    import java.awt.Font;
    import java.awt.FontFormatException;
    import java.awt.GraphicsEnvironment;
    import java.io.IOException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.*;
    import java.awt.event.*;
    import java.io.File;
    import javax.swing.text.*;
    
    class DocumentTest extends JFrame implements ActionListener {
    
        Font myFont = null;
        JDocumentEditor ed = new JDocumentEditor();
        JFileChooser fc = new JFileChooser(), img = new JFileChooser();
    
        public DocumentTest() {
            super("Document Editor");
            createToolbar();
            this.getContentPane().add(new JScrollPane(ed), "Center");
            fc.setFileFilter(new javax.swing.filechooser.FileFilter() {
    
                public boolean accept(java.io.File f) {
                    String t = f.getName().toLowerCase();
                    return f.isDirectory() || t.endsWith(".html");
                }
    
                public String getDescription() {
                    return "HTML";
                }
            });
            img.setFileFilter(new javax.swing.filechooser.FileFilter() {
    
                public boolean accept(java.io.File f) {
                    String t = f.getName().toLowerCase();
                    return f.isDirectory() || t.endsWith(".jpg") || t.endsWith(".jpeg") || t.endsWith(".png") || t.endsWith(".gif");
                }
    
                public String getDescription() {
                    return "Image Files";
                }
            });
            ed.addKeyListener(new KeyAdapter() {
    
                public void keyReleased(KeyEvent ke) {
                    if (ke.getKeyCode() == KeyEvent.VK_ENTER) {
                        ed.insertHTML("<p> </p>");
                    }
                }
            });
            this.pack();
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setVisible(true);
            ed.requestFocus();
        }
    
        private void createToolbar() {
            JToolBar tool = new JToolBar();
            String buttonName[] = {"New", "Open", "Save", "Font", "Size", "Left", "Center", "Right", "Above", "Below", "Indent", "Line Space", "Font Colour", "Background", "Bold", "Italic", "Underline", "Superscript", "Subscript", "Strike", "Image", "Table", "Print", "Gujarati"};
            JButton temp = null;
            JPanel p = new JPanel(new java.awt.GridLayout(4, 6));
            for (int i = 0; i < buttonName.length; i++) {
                temp = new JButton(buttonName[i]);
                temp.addActionListener(this);
                p.add(temp);
            }
            JButton undo = new JButton("Undo"), redo = new JButton("Redo");
    
            ed.setUndoRedo(undo, redo);
            p.add(undo);
    
            tool.add(p);
            this.getContentPane().add(tool, "North");
    
    
        }
    
        public void actionPerformed(ActionEvent ae) {
            String com = ae.getActionCommand();
            if (com.equals("Font")) {
                ed.setTextFontFamily(JOptionPane.showInputDialog(this, "Enter Font Name"));
            } else if (com.equals("Size")) {
                ed.setTextFontSize(Integer.parseInt(JOptionPane.showInputDialog(this, "Enter font size")));
            } else if (com.equals("Gujarati")) {
    
    
                ed.setfonts();
    
    
    
    
    
            } else if (com.equals("Left")) {
                ed.setTextAlignment(StyleConstants.ALIGN_LEFT);
            } else if (com.equals("Center")) {
                ed.setTextAlignment(StyleConstants.ALIGN_CENTER);
            } else if (com.equals("Right")) {
                ed.setTextAlignment(StyleConstants.ALIGN_RIGHT);
            } else if (com.equals("Above")) {
                ed.setTextSpaceAbove(Float.parseFloat(JOptionPane.showInputDialog(this, "Enter space above")));
            } else if (com.equals("Below")) {
                ed.setTextSpaceBelow(Float.parseFloat(JOptionPane.showInputDialog(this, "Enter space below")));
            } else if (com.equals("Indent")) {
                ed.setTextIndent(Float.parseFloat(JOptionPane.showInputDialog(this, "Enter first line indent")));
            } else if (com.equals("Line Space")) {
                ed.setTextLineSpacing(Float.parseFloat(JOptionPane.showInputDialog(this, "Enter line spacing")));
            } else if (com.equals("Font Colour")) {
                ed.setTextForeground(JColorChooser.showDialog(this, "Font colour", null));
            } else if (com.equals("Background")) {
                ed.setTextBackground(JColorChooser.showDialog(this, "Background", null));
            } else if (com.equals("Bold")) {
                ed.setTextBold();
            } else if (com.equals("Italic")) {
                ed.setTextItalic();
            } else if (com.equals("Underline")) {
                ed.setTextUnderline();
            } else if (com.equals("Superscript")) {
                ed.setTextSuperscript();
            } else if (com.equals("Subscript")) {
                ed.setTextSubscript();
            } else if (com.equals("Strike")) {
                ed.setTextStrikeThrough();
            } else if (com.equals("New")) {
                ed.setDocument(((javax.swing.text.html.HTMLEditorKit) ed.getEditorKit()).createDefaultDocument());
                ed.resetUndo();
            } else if (com.equals("Save")) {
                saveFile();
            } else if (com.equals("Open")) {
                openFile();
                ed.resetUndo();
            } else if (com.equals("Image")) {
                if (img.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
                    ed.insertImage(img.getSelectedFile().getAbsolutePath());
    
                }
            } else if (com.equals("Table")) {
                ed.insertTable(Integer.parseInt(JOptionPane.showInputDialog(this, "Enter rows")), Integer.parseInt(JOptionPane.showInputDialog(this, "Enter columns")));
            } else if (com.equals("Print")) {
                try {
                    ed.print();
                } catch (Exception ex) {
                }
            }
            ed.requestFocus();
            System.out.println(ed.getSelectedText() + ed.getText());
        }
    
        private void saveFile() {
            if (fc.showSaveDialog(this) != JFileChooser.APPROVE_OPTION) {
                return;
            }
            java.io.File f = fc.getSelectedFile();
            try {
                java.io.FileWriter fw = new java.io.FileWriter(f);
                ed.write(fw);
                fw.close();
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(this, ex.toString());
            }
        }
    
        private void openFile() {
            ed.setEditable(false);
            if (fc.showOpenDialog(this) != JFileChooser.APPROVE_OPTION) {
                return;
            }
            java.io.File f = fc.getSelectedFile();
            try {
                ed.read(new java.io.FileReader(f), null);
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(this, ex.toString());
            }
        }
    
        public static void main(String arg[]) {
            DocumentTest dt = new DocumentTest();
    
    
        }
    }


  • 相关阅读:
    手机端页面自适应解决方案
    每日一算法之拓扑排序
    C++顺序容器类总结
    c++ 运算符优先级
    CUDA获取显卡数据
    第一个CUDA程序
    C++有关类的符号总结
    shell编程的一些例子5
    shell编程的一些例子4
    shell编程的一些例子3
  • 原文地址:https://www.cnblogs.com/daichangya/p/12959334.html
Copyright © 2011-2022 走看看