📄 textframe.java
字号:
catch(Exception efind)
{
}
}else if(id.equals("替换")){
final JDialog jd=new JDialog();//(null,"替换",true);
GridBagLayout gbl=new GridBagLayout();
GridBagConstraints gbc=new GridBagConstraints();
gbc.weightx=1;
gbc.weighty=1;
gbc.gridwidth=1;
gbc.gridheight=1;
JLabel jlFind=new JLabel("查找:");
JLabel jp=new JLabel("替换内容:");
final JTextField jtf=new JTextField(15);
final JTextField jtf1=new JTextField(15);
jd.getContentPane().setLayout(gbl);
jd.setSize(330,150);
jd.setResizable(false);
final JButton jbReplace=new JButton("替换");
final JButton jbReplaceAll=new JButton("替换所有");
final JButton jbCancel=new JButton("取消");
final JButton jbFind=new JButton("查找");
gbc.gridx=0;
gbc.gridy=0;
jd.getContentPane().add(jlFind,gbc);
gbc.gridx=1;
gbc.gridy=0;
jd.getContentPane().add(jtf1,gbc);
gbc.gridx=2;
gbc.gridy=0;
jd.getContentPane().add(jbFind,gbc);
gbc.gridx=0;
gbc.gridy=1;
jd.getContentPane().add(jp,gbc);
gbc.gridx=1;
gbc.gridy=1;
jd.getContentPane().add(jtf,gbc);
gbc.gridx=2;
gbc.gridy=1;
jd.getContentPane().add(jbReplace,gbc);
gbc.gridx=2;
gbc.gridy=2;
jd.getContentPane().add(jbReplaceAll,gbc);
gbc.gridx=2;
gbc.gridy=3;
jd.getContentPane().add(jbCancel,gbc);
jbFind.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent efind)
{
String strA=mainContain.getText();
String strB=jtf1.getText();
if(a>=0)
{
a=strA.indexOf(strB,StartFindPos);
// System.out.println(a+b);
b=strB.length();
StartFindPos=a+b;
if(a==-1)
{
JOptionPane.showMessageDialog(null, "没有您要查找的信息", "查找结果",1);
a=0;
StartFindPos=0;
}
mainContain.select(a,StartFindPos);
// System.out.println(StartFindPos);
}
}
}
);
jbReplace.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("替换"))
{
String strRepleace=jtf.getText();
mainContain.replaceSelection(strRepleace);
}
}
}
);
jbReplaceAll.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
while(a>-1)
{
String strA=mainContain.getText();
String strB=jtf1.getText();
a=strA.indexOf(strB,StartFindPos);
if(a==-1)
{
break;
}
// System.out.println(a+b);
b=strB.length();
StartFindPos=a+b;
// System.out.println(StartFindPos);
mainContain.select(a,StartFindPos);
// System.out.println(StartFindPos);
String strRepleaceAll=jtf.getText();
mainContain.replaceSelection(strRepleaceAll);
StartFindPos=a+b;
}
JOptionPane.showMessageDialog(null, "全部替换完毕", "替换内容",1);
a=0;
StartFindPos=0;
}
}
);
jbCancel.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ejb)
{
jd.dispose();
}
}
);
jd.setLocation(240,200);
jd.setVisible(true);
jd.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
} else if(id.equals("全选")||id.equals("全选(A)")){
mainContain.selectAll();
}else if(id.equals("帮助主题")){
jd2.setVisible(true);
}else if(id.equals("关于")){
jd1.setVisible(true);
}
else if (id.equals("撤消")||id.equals("撤销(U)")){
try {
if (undo.canUndo()) {
undo.undo();
}
} catch (CannotUndoException ee) {
}
}
}
};
void saveFile(){
try{
FileWriter fw=new FileWriter(file);
fw.write(mainContain.getText());
fw.close();
}
catch(Exception e){
e.printStackTrace();
}
}
void openFile(){
try{
len=0;
BufferedReader br=new BufferedReader(new FileReader(file));
String s=br.readLine(),content="";
while(s!=null){
len++;
content=content+s+"\n";
s=br.readLine();
}
br.close();
mainContain.setText(content);
mainContain.setCaretPosition(0);
setLineNumber();
}catch(Exception e){
e.printStackTrace();
}
}
void initToolBar(){
JToolBar jbl=new JToolBar();
ImageIcon imageicon1 = new ImageIcon(this.getClass().getResource("ImageIcon/(49,38).png"));;
ImageIcon imageicon2 = new ImageIcon(this.getClass().getResource("ImageIcon/(23,11).png"));
ImageIcon imageicon3 = new ImageIcon(this.getClass().getResource("ImageIcon/(45,16).png"));
ImageIcon imageicon4 = new ImageIcon(this.getClass().getResource("ImageIcon/(16,11).png"));
ImageIcon imageicon5 = new ImageIcon(this.getClass().getResource("ImageIcon/(18,00).png"));
ImageIcon imageicon6 = new ImageIcon(this.getClass().getResource("ImageIcon/(42,28).png"));
ImageIcon imageicon7 = new ImageIcon(this.getClass().getResource("ImageIcon/(46,46).png"));
ImageIcon imageicon8 = new ImageIcon(this.getClass().getResource("ImageIcon/(46,35).png"));
ImageIcon imageicon9 = new ImageIcon(this.getClass().getResource("ImageIcon/(41,09).png"));
JButton []buttons=new JButton[]{
new JButton(imageicon1),
new JButton(imageicon2),
new JButton(imageicon3),
new JButton(imageicon4),
new JButton(imageicon5),
new JButton(imageicon6),
new JButton(imageicon7),
new JButton(imageicon8),
new JButton(imageicon9)
};
for(int i=0;i<buttons.length;i++)
jbl.add(buttons[i]);
buttons[0].setToolTipText("新建");
buttons[0].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
mainContain.setText("");
len=0;
setLineNumber();
errPane.setText("");
file=null;
}
});
buttons[1].setToolTipText("打开");
buttons[1].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(file !=null)jfc.setSelectedFile(file);
int returnVal=jfc.showOpenDialog(TextFrame.this);
if(returnVal==JFileChooser.APPROVE_OPTION){
file=jfc.getSelectedFile();
openFile();
errPane.setText("");
new Parse(mainContain,errPane);
}
}
});
buttons[2].setToolTipText("保存");
buttons[2].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if (file!=null) jfc.setSelectedFile(file);
int returnVal=jfc.showSaveDialog(TextFrame.this);
if (returnVal==JFileChooser.APPROVE_OPTION){
file=jfc.getSelectedFile();
saveFile();
errPane.setText("");
new Parse(mainContain,errPane);
}
}
});
buttons[3].setToolTipText("复制");
buttons[3].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
mainContain.copy();
}
});
buttons[4].setToolTipText("剪切");
buttons[4].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
mainContain.cut();
}
});
buttons[5].setToolTipText("粘贴");
buttons[5].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
mainContain.paste();
}
});
buttons[6].setToolTipText("帮助");
buttons[6].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
//方法未实现
}
});
buttons[7].setToolTipText("视图切换");
final JEditorPane monitor=mainContain;
buttons[7].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
// 方法未实现
if (file==null){
file=new File("c:\\temp.html");
saveFile();
}
else
saveFile();
try {
Runtime.getRuntime().exec("C:\\Program Files\\Internet Explorer\\iexplore.exe "+file);
}
catch (IOException ex) {
System.out.println(ex);
}
if (file.getName().equals("c:\\temp.html"))
file.delete();
}
});
buttons[8].setToolTipText("" +"启动检查");
buttons[8].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
errPane.setText("");
new Parse(mainContain,errPane);
}
});
c.add(jbl,BorderLayout.NORTH);
}
//帮助对话框
void initAboutDialog(){
//帮助对话框
JTextArea message=new JTextArea();
String s=" HTML Editor\n\n作者:黄添来,夏晨风,李小鹏,龚晓晔\n版本:1.0\n时间:2007年4月14日\n";
String lianxi="E-mail:gongxiaoye198777@163.com\n\tsdx112@163.com\n\tissxia@gmail.com\nQQ:254027844 523877701 4461093";
message.setEditable(false);
message.setLineWrap(true);
message.setColumns(20);
message.setFont(new Font("宋体",Font.BOLD,15));
message.setBounds(5,5,290,200);
message.append(s+"\n\n"+lianxi);
jd1.getContentPane().add(message);
jd1.setModal(true);
jd1.setSize((int) Toolkit.getDefaultToolkit().getScreenSize().getWidth()/3,(int)Toolkit.getDefaultToolkit().getScreenSize().getHeight()/3);
JTextArea help=new JTextArea();
String str=" HTMLEditor概述\n HTMLEditor是一个用来创建符合Java API提供的W3C标准网页的HTML编辑器。HTMLEditor最常用来查看或编辑HTML文件。\n 当使用该编辑器创建新HTML文件时,能自动显示行数,将标记用蓝色显示,属性用红色显示,方便编辑和修改。并能自动检查HTML是否出现语法错误,在编辑器下面的控制台里显示错误信息,指出错误发生的行数和错误类型 。\n 我们所采取的Html标准是javax.swing.text.html.dom里面的封装类:HTML.Tag和HTML.Attribute,所有个别里面没有的属性可能会报错 。";
help.setEditable(false);
help.setLineWrap(true);
help.setColumns(20);
help.setFont(new Font("宋体",Font.BOLD,15));
help.setBounds(5,5,290,200);
help.append(str);
jd2.getContentPane().add(help);
jd2.setModal(true);
jd2.setSize((int) Toolkit.getDefaultToolkit().getScreenSize().getWidth()/2,(int)Toolkit.getDefaultToolkit().getScreenSize().getHeight()/2);
}
void initJTextArea(){
c.add(new JScrollPane(errPane),BorderLayout.SOUTH);
errPane.setLineWrap(true);
errPane.setEditable(false);
}
class UndoHander implements UndoableEditListener
{
public void undoableEditHappened(UndoableEditEvent eundo)
{
undo.addEdit(eundo.getEdit());
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -