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

📄 qqtextpane.java

📁 IO流的项目好
💻 JAVA
字号:
//文本插入
package myQQ;

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

class QQTextPane extends JScrollPane
{
	JTextPane jtp = new JTextPane();
	
	//记录前次字体属性---------开始
	String styleOld = "宋体";
	int sizeOld = 14;
	Color cOld = Color.BLACK;
	boolean bOld = false;
	boolean iOld = false;
	//记录前次字体属性---------结束
	
	//记录插入表情
	Hashtable face = new Hashtable();
	
	QQTextPane()
	{
		this.setViewportView(jtp);
		jtp.setFont(new Font(this.styleOld,Font.PLAIN,this.sizeOld));
		jtp.setForeground(this.cOld);
		//jtp.addCaretListener(this);
		jtp.addKeyListener(new KE());
	}
	
	public void setFontStyle(String styleNew)
	{	//设置字形
		jtp.setFont(new Font(styleNew,this.getBorI(this.bOld,this.iOld),this.sizeOld));
		jtp.setForeground(this.cOld);
		this.styleOld = styleNew;
	}
	
	public void setFontSize(String sizeNew)
	{	//设置字号
		int x = Integer.parseInt(sizeNew);
		jtp.setFont(new Font(this.styleOld,this.getBorI(this.bOld,this.iOld),x));
		jtp.setForeground(this.cOld);
		this.sizeOld = x;
	}
	
	public void setFontBold(boolean bNew)
	{	//设置粗体
		jtp.setFont(new Font(this.styleOld,this.getBorI(bNew,this.iOld),this.sizeOld));
		jtp.setForeground(this.cOld);
		this.bOld = bNew;
	}
	
	public void setFontItalic(boolean iNew)
	{	//设置斜体
		jtp.setFont(new Font(this.styleOld,this.getBorI(this.bOld,iNew),this.sizeOld));
		jtp.setForeground(this.cOld);
		this.iOld = iNew;
	}
	
	public void setFontColor(Color cNew)
	{	//设置颜色
		jtp.setFont(new Font(this.styleOld,this.getBorI(this.bOld,this.iOld),this.sizeOld));
		jtp.setForeground(cNew);
		this.cOld = cNew;
	}
	
	public int getBorI(boolean b,boolean i)
	{	//取得字体粗、斜、平体
		int x = 0;
		if(b)
		{
			if(i)
				x = Font.BOLD|Font.ITALIC;
			else
				x = Font.BOLD;
		}
		else
		{
			if(i)
				x = Font.ITALIC;
			else
				x = Font.PLAIN;
		}
		return x;
	}
	
	public void setFace(String icname)
	{	//插入表情
		int loc = jtp.getCaretPosition();
		face.put(new Integer(loc),icname); //将位置及图片名存入hashtable
		jtp.insertIcon(new ImageIcon(icname));
	}
	
	public void setEmpty()
	{	//置空
		jtp.setText("");
		face.clear();
	}
	
	public boolean isEmpty()
	{	//判断是否有插入内容
		boolean f = false;
		String s = jtp.getText().trim();
		if(s.length()==0&&face.size()==0)
			f = true;
		return f;
	}
	
	public String getContent()
	{	//取得当前内容
		String sText = jtp.getText();
		String sCt = "",sT1 = "",sT2 = "",sEnd = "</font></body></html>";
		//转换html代码
		String sC = RGBtoHtml.toHtml(this.cOld);
		String sFont = "<font face='"+this.styleOld+"' style='font-size: "+this.sizeOld+
			"px' color='"+sC+"' >";
		if(this.bOld)
		{
			sFont += "<strong>";
			sEnd = "</strong>"+sEnd;
		}
		if(this.iOld)
		{
			sFont += "<em>";
			sEnd = "</en>"+sEnd;
		}
		int start = 0;
		while(true)
		{
			int locx = sText.indexOf(" ",start);
			if(locx==-1)
			{
				if(start==0)
				sCt = sText;
				break;
			}
			else if(face.containsKey(new Integer(locx)))
			{
				sT1 = sText.substring(start,locx);
				start = locx + 1;
				sT2 = sText.substring(locx+1);
				String imName = (String)face.get(new Integer(locx));
				String sImg = "<img name='"+imName+"' src='"+this.getImgPath(imName)+"'>";
				sCt = sCt+sT1+sImg;
			}	
		}
		sCt = sFont+sCt+sT2+sEnd;
		return sCt;
	}
	
	public String getImgPath(String icDp)
	{	//取得图标绝对位置--根据图片名称转换
		File f = new File(icDp);
		String url = f.getAbsolutePath();
		url = url.replace('\\','/');
		url = "file:/"+url;
		return url;
	}
	
	class KE extends KeyAdapter
	{
		public void keyReleased(KeyEvent k)
		{	//键盘事件
			if(k.getKeyCode()==KeyEvent.VK_BACK_SPACE)
			{	//按退格键时判断是否删除图片
				int x = jtp.getCaretPosition();
				for (int i = 0; i<face.size(); i++)
				{	
					if(face.containsKey(new Integer(x)))
					{	//删除后移除hashtable中的内容
						face.remove(new Integer(x));
					}
				}
			}
		}
	}
}

⌨️ 快捷键说明

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