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