📄 qqeditorpane.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 + -