⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newtextpane.java

📁 这个小软件( RealEditor )是同学一起编写的
💻 JAVA
字号:
package com.ecust.swing;

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.undo.*;
import javax.swing.text.*;
import javax.swing.plaf.*;
import java.io.*;


public class NewTextPane extends JTextPane {
	
        private static final long serialVersionUID = 7304819262700499868L;
        private static int tab = 10;
        private boolean saved;
        private static boolean lineWrap;
        private Font font = new Font( "serif", Font.PLAIN, 12 );
        private StyleContext context = new StyleContext();
        private DefaultStyledDocument doc = new DefaultStyledDocument( context );
        private Element rootElement = doc.getDefaultRootElement();
        private Style logicalStyle = doc.getLogicalStyle( 0 );
        private transient UndoManager undoManager = new UndoManager();
        private File path;
        private boolean isStyledModified = false;
        private int cursorPos = getCaretPosition(); 
        private int row;
        private Element para = rootElement.getElement(row);
        private int col;
        private int length;
        private int start;
        private int end; 
        private String content = "";
        private String lineContent = "";
        private double percent = 0;
        
        
        public NewTextPane() {
            
            setDocument( doc );
            setRowCol();
            setSelectedTextColor( Color.white );
            setSelectionColor( new Color( 0, 102, 255 ) );
            doc.addDocumentListener( new DocL() );
            doc.addUndoableEditListener( new UndoableEditL() );
            addCaretListener( new CaretL() );
            
        }	
        
        public void setIsStyledModified( boolean isStyledModified ) {
            this.isStyledModified = isStyledModified;
            setSaved( false );
        }
        
        public boolean getIsStyledModified() {
            return isStyledModified;
        }
        
        public void setPath( File path ) {
            this.path = path;
        }
        
        public File getPath() {
            return path;
        }
    		
        public void setLineWrap( boolean lw ) {
            lineWrap = lw;
        }
        
    	public boolean getScrollableTracksViewportWidth() {
            boolean flag = false;
            if ( lineWrap ) {
                flag = super.getScrollableTracksViewportWidth();
            } else {
                Component parent = getParent();
                ComponentUI ui = getUI();                
                flag = ( parent != 
                    null ? (  ui.getPreferredSize(this).width
                           <= parent.getSize().width ) : true );               
            }           
            return flag;
                    
       }
		
		
		
		public boolean getSaved() {
			return saved;
		}
		
		public void setSaved( boolean saved ) {
			this.saved = saved;
		}
		
		public int getFontSize() {
			return font.getSize();
		}
		
		public void setFontSize( int fontSize ) {
			font = new Font( font.getName(), font.getStyle(), fontSize );
		}
		
		public Style getLogicalStyle() {
			return logicalStyle;
		}
		
		public UndoManager getUndoManager() {
			return undoManager;
		}
		
		public void setUndoManager( UndoManager undoManager ) {
			this.undoManager = undoManager;
		}
		
		
		public DefaultStyledDocument getDoc() {
			return doc;
		}
        
        public void setRowCol() {
            cursorPos = NewTextPane.this.getCaretPosition(); 
            row = rootElement.getElementIndex(cursorPos);
            para = rootElement.getElement(row);
            start = para.getStartOffset();
            end = para.getEndOffset() - 1;
            
            try {
                content = doc.getText(start, cursorPos - start );
                lineContent = doc.getText( start, end - start );
            } catch (BadLocationException ex) {
                ex.printStackTrace( System.err );
            }
            
            col = 0;
            for ( int i = 0; i < content.length(); i++ ) {
                if ( content.charAt( i ) == '\t' ) {
                    col += tab;
                } else {
                    col++;
                }
            }
            
            double num = 0;
            for ( int i = 0; i < lineContent.length(); i++ ) {
                if ( lineContent.charAt( i ) == '\t' ) {
                    num += tab;
                } else {
                    num++;
                }
            }
            
            if ( num != 0 )
                percent = col / num;
            else 
                percent = 0;
            
            length = doc.getLength();
            
        }
        
        public int getRow() {
            return row;
        }
        
        public int getCol() {
            return col;
        }
        
        public String getPercent() {
            percent *= 100;
            String s = percent + "";
            int index = s.indexOf( "." );
            if ( index != -1 ) {
                s = s.substring( 0, index );
            } 
            return s + "%";
        }
		
        public int getLength() {
            return length;
        }
		
		private class UndoableEditL implements UndoableEditListener {
			public void undoableEditHappened( UndoableEditEvent event ) {
				undoManager.addEdit( event.getEdit() );
			}
		}
		
        private class CaretL implements CaretListener {
            public void caretUpdate( CaretEvent e ) {
                setRowCol();
                RealEditorFrame.getStatusLabel().setText( 
                        "Row: " + ( row  + 1 ) + 
                        " Col: " + ( col + 1 ) +
                        " Percent: " + getPercent() +
                        " Length: " + length );
            }
        }
        
		private class DocL implements DocumentListener {
			public void insertUpdate( DocumentEvent e )	 {
                
				saved = false;
			}
			public void removeUpdate( DocumentEvent e ) {
                
				saved = false;
			}
			public void changedUpdate( DocumentEvent e ) {
				
				//saved = false;
			}
		}
		
		
		
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -