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();
    
    
        }
    }


  • 相关阅读:
    149. Max Points on a Line(js)
    148. Sort List(js)
    147. Insertion Sort List(js)
    146. LRU Cache(js)
    145. Binary Tree Postorder Traversal(js)
    144. Binary Tree Preorder Traversal(js)
    143. Reorder List(js)
    142. Linked List Cycle II(js)
    141. Linked List Cycle(js)
    140. Word Break II(js)
  • 原文地址:https://www.cnblogs.com/daichangya/p/12959334.html
Copyright © 2011-2022 走看看