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

📄 qqeditorpane.java

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

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

class QQEditorPane extends JScrollPane 
{
	JEditorPane jep = new JEditorPane();
	//记录前次字体属性---------开始
	String styleOld = "宋体";
	String sizeOld = "14";
	Color cOld = Color.BLACK;
	boolean bOld = false;
	boolean iOld = false;
	//记录前次字体属性---------结束
	
	QQEditorPane()
	{
		this.setViewportView(jep);
		jep.setContentType("text/html");
	}
	
	public String getContent()
	{	//取得当前内容
		String sOld = jep.getText();
		int end = this.getPEnd(sOld,"body");
		String sNew = sOld.substring(end);
		return sNew;
	}
	
	public void setContent(String sNew)
	{	//设置当前内容--追加方式
		String sOld = jep.getText();
		int end = sOld.indexOf("</body>");
		sOld = sOld.substring(0,end); //原内容
		sNew = this.IconPathChange(sNew); //根据插入图标名称取得绝对地址
		sNew = "<p>"+sNew; //换行
		sNew = sOld+sNew; //新内容
		jep.setText(sNew);
	}
	
	public void writeSaying(String pn,Calendar t,Color c)
	{	//写入说话者
		String time = t.getTime().toLocaleString();
		String text = "<font face='宋体' size='4' color='"
			+RGBtoHtml.toHtml(c)+"'>"+pn+" ("+time+"):</font>";
		this.setContent(text);
	}
	
	public String IconPathChange(String text)
	{	//将插入图标更改为本地路径
		String[] sImg = this.getPTextArray(text,"img");
		for (int i = 0; i<sImg.length; i++)
		{
			String name = this.getAText(sImg[i],"name");
			String url = this.getImgPath(name);
			String urlOld = this.getAText(sImg[i],"src");
			String sImgNew = sImg[i].replaceFirst(urlOld,url);
			text = text.replaceFirst(sImg[i],sImgNew);
		}
		return text;
	}
	
	public String getScene(ImageIcon ic)
	{	//取得当前场景--图片名称
		return ic.getDescription();
	}
	
	public void setScene(String seNew)
	{	//设置当前场景--根据图片名转换为绝对地址
		String url = this.getImgPath(seNew);
		String sOld = jep.getText();
		String bOld = this.getPText(sOld,"body");
		String bNew = "<body background='"+url+"'>";
		String sNew = sOld.replaceFirst(bOld,bNew);
		jep.setText(sNew);
	}
	
	public void setLink()
	{
	
	}
	
	public void setFace(String icDp)
	{	//设置表情
		String sOld = jep.getText();
		int in = 0;
		if(sOld.indexOf("</font>")==-1)
		{
			in = sOld.lastIndexOf("</body>");
		} 
		else
		{
			int inF = sOld.lastIndexOf("</font>");
			int inB = sOld.lastIndexOf("</strong>");
			int inE = sOld.lastIndexOf("</em>");
			//文本末尾
			in = this.getMin(inF,inB,inE);	
		}
		String sOld1 = sOld.substring(0,in);
		String sOld2 = sOld.substring(in);
		String url = this.getImgPath(icDp);
		String sImg = "<img src='"+url+"' name='"+icDp+"'>";
		String sNew = sOld1+sImg+sOld2;
		jep.setText(sNew);
	}
	
	public int getMin(int x,int y,int z)
	{	//三个数的最小值
		int tem = x;
		if(y!=-1)
			tem = x<y?x:y;
		if(z!=-1)
			tem = tem<z?tem:z;
		return tem;	
	}
	
	public String getImgPath(String icDp)
	{	//取得图标绝对位置--根据图片名称转换
		File f = new File(icDp);
		String url = f.getAbsolutePath();
		url = url.replace('\\','/');
		url = "file:/"+url;
		return url;
	}
	
	public int getPEnd(String text,String p)
	{	//取得标记结束位置
		int S = text.indexOf("<"+p);
		int E = text.indexOf(">",S)+1;
		return E;
	}
	
	public String getPText(String text,String p)
	{	//取得标记内容
		int S = text.indexOf("<"+p);
		int E = text.indexOf(">",S)+1;
		return text.substring(S,E);
	}
	
	public String getAText(String text,String a)
	{	//取得属性内容
		int S,E,E1,E2;
		S = text.indexOf(a+"=")+a.length()+2;
		E1 = text.indexOf(">",S)-1;
		E2 = text.indexOf(" ",S)-1;
		if(E2!=-2)
			E = E1<E2?E1:E2;
		else
			E = E1;
		return text.substring(S,E);	
	}
	
	public String[] getPTextArray(String text,String p)
	{	//取得标记内容数组
		Vector v = new Vector();
		int S = 0;
		int E = 0;
		String T = "";
		int i = 0;
		S = text.indexOf("<"+p);
		while(S!=-1)
		{
			E = text.indexOf(">",S)+1;
			T = text.substring(S,E);
			v.addElement(T);
			S = text.indexOf("<"+p,E);
			i++;
		}
		String[] R = new String[v.size()];
		for (int j = 0; j<v.size(); j++)
		{
			R[j] = (String)v.elementAt(j);
		}
		return R;
	}
	
	public void unWrite(boolean f)
	{	//设置是否可编辑
		if(f)
			jep.setEditable(false);
		else
			jep.setEditable(true);
	}
	
	/*public static void main(String[]args)
	{	//测试
		JFrame jf = new JFrame();
		JButton jb = new JButton("添加");
		jb.addActionListener(new MM());
		jf.getContentPane().add(x);
		jf.getContentPane().add(jb,BorderLayout.SOUTH);
		jf.setSize(400,300);
		x.setType("华文行楷","45",Color.blue,false,true);
		x.setScene("cp0_1.jpg");
		x.setFace("m0.png");
		x.setFace("m0.png");
		x.setFace("m0.png");

		jf.show();	
	}
	
	static class MM implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			//x.setFace("m0.png");
			String s = x.getContent();
			x.setContent(s);
			x.setScene("rp5_1.jpg");
			x.setType("黑体","20",Color.red,false,true);
		}
	}*/
}

⌨️ 快捷键说明

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