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

📄 editarea.java

📁 简单的java文本编辑器
💻 JAVA
字号:
/*************************************************************************************
* 类名: EditArea                                                               
*                                                                    
* 功能: 此类的主要的功能为编辑器中“编辑区”对象类,此类通过继承扩展了JTextArea类,并且 ,此类
*       实现了Printable接口,通过实现Printable接口中的print方法来实现打印功能。并且通过自定义                                                              
*       的方法printArea来实现对print方法的封装调用。
*                                                                
**************************************************************************************/
package edit.com;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import java.awt.print.*;

class EditArea extends JTextArea
			   implements Printable
{
	private String str;
	private Font font;
	private PrinterJob job;
	private PageFormat format;
	private double visiblePageWidth , visiblePageHeight;

	private final static int PageX = 15 ;
	private final static int PageY = 20;
	private boolean isWrap = false;
	private boolean isEditable = false;

	public EditArea( int rows , int columns )
	{
		super( rows , columns );

		str = "print test\n";
		font = new Font( "Dialog" , Font.BOLD , 15 );
	}

	public void setString( String aStr )
	{
		str = aStr;
	}

	public void setTextFont( Font aFont )
	{
		font = aFont;
	}

	public void setWrapTrue()
	{
		isWrap = true;
	}

	public void setWrapFalse()
	{
		isWrap = false;
	}

	public boolean getWrapState()
	{
		return isWrap;
	}

	public void setIsEditTrue()
	{
		isEditable = true;
	}

	public void setIsEditFalse()
	{
		isEditable = false;
	}

	public boolean getIsEditable()
	{
		return isEditable;
	}

	public void printArea() 
	   throws PrinterException	{
       job = PrinterJob.getPrinterJob();
       format = job.defaultPage();

       job.setPrintable( this , format );
       visiblePageWidth = format.getImageableWidth();
       visiblePageHeight = format.getImageableHeight();

       if( job.printDialog() )
       {
           job.print();
       }
    }

    //注意:在实现此方法时,设定只能打印一页,读者们可以自己设定打印的页数
    public int print( Graphics g, PageFormat pf, int page ) 
       throws PrinterException
    {
    	int fontHeight = 0;
    	int stringWidth = 0;
    	int line = 0;
    	String s = null;
    	FontMetrics fm = null;

    	if( page > 1 )
    	{
    		return Printable.NO_SUCH_PAGE;
    	}

    	Graphics2D g2 = ( Graphics2D )g;
    	g2.translate( ( int )pf.getImageableX() , ( int )pf.getImageableY() );
    	g2.setFont( font );

    	fm = getFontMetrics( font );
    	fontHeight = fm.getHeight();

    	try{
        DataOutputStream osw = new DataOutputStream( new FileOutputStream( "$temp.$$p" ) );
        osw.writeBytes( str );
        osw.close();
        } catch(IOException e){}

    	try{
    			BufferedReader br = new BufferedReader( new FileReader( "$temp.$$p" ) );
    			s = br.readLine();

    			while(  s != null )
    			{
    				if( s.length() == 0 )
    				{
    					g2.drawString( " ", PageX, PageY + fontHeight * ( line++ ) );
    			    }
    			    else
    			    {
    			    	stringWidth = fm.stringWidth( s );
    			    	if( stringWidth > visiblePageWidth )
    			    	{
    			    		String s1, s2;
				            int goBack = 0;
				            while( fm.stringWidth( s1 = s.substring( 0 , s.length() - goBack ) ) > visiblePageWidth )
				            {
				                 goBack++;
				            }
				            s1 = s.substring( 0, s.length() - goBack );
				            s2 = s.substring( s.length() - goBack - 1 );
				            g2.drawString( s1, PageX, PageY + fontHeight * ( line++ ) );
				            g2.drawString( s2, PageX, PageY + fontHeight * ( line++ ) );
				        }
				        else
				        {
				        	g2.drawString( s, PageX, PageY + fontHeight * ( line++ ) );
    			        }
    			    }

    			    s = br.readLine();
    			}

    			br.close();
    		}catch( IOException i ){}

    	return Printable.PAGE_EXISTS;
	}
}

⌨️ 快捷键说明

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