📄 txtedit2.~jav
字号:
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class txtedit2
{
public static void main(String args[])
{
MySimpleTextEditor editor=new MySimpleTextEditor();
editor.setSize(300,200);
editor.setVisible(true);
editor.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{System.exit(0);}
});
}
}
class MySimpleTextEditor extends Frame implements ActionListener
{
private MenuBar myBar=new MenuBar();
private Menu fileMenu,editMenu,cutsMenu;
private Menu fonteditMenu,name,style,size,color;
private MenuItem cutItem,copyItem,pasteItem,selectAllItem;
private MenuItem recentcutItem;
private MenuItem quitItem,openItem,saveItem;
private MenuItem srf,dia,mon;
private MenuItem s1,s2,s3,s4;
private MenuItem cr,cg,cb,cd;
private MenuItem gr,gg,gb,gp;
public CheckboxMenuItem plain,bold,italic;
// private MenuItem plain,bold,italic;
private TextArea mainWorkWindow=new TextArea(10,15);//文本区域
private String placeHolder=" ";
PopupMenu popM=new PopupMenu();
private Vector recentCuts=new Vector();
int fontsize1=14;
int fontstyle1=Font.PLAIN;
String fontname1="Dialog";
public MySimpleTextEditor()
{
super("我的文本编辑器");
setLayout(new BorderLayout());
add("Center",mainWorkWindow);
setMenuBar(myBar);//必要的
initFileMenu();
initEditMenu();
initFontMenu();
initPopMenu();
mainWorkWindow.add(popM);
mainWorkWindow.addMouseListener(new HandleMouse(this));
addWindowListener(new MyWindowListener());
}
private void initEditMenu()
{
editMenu=new Menu("编辑");
myBar.add(editMenu);
cutItem=new Menu("剪切");
cutItem.addActionListener(this);
editMenu.add(cutItem);
copyItem=new MenuItem("复制");
copyItem.addActionListener(this);
editMenu.add(copyItem);
pasteItem=new MenuItem("粘贴");
pasteItem.addActionListener(this);
editMenu.add(pasteItem);
editMenu.addSeparator();
selectAllItem=new MenuItem("全选");
selectAllItem.addActionListener(this);
editMenu.add(selectAllItem);
editMenu.addSeparator();
cutsMenu=new Menu("剪贴板");
editMenu.add(cutsMenu);
}
//初始化编辑菜单
private void initFileMenu()
{
fileMenu=new Menu("文件");
myBar.add(fileMenu);
openItem=new MenuItem("打开");
openItem.addActionListener(this);
openItem.setEnabled(true);
fileMenu.add(openItem);
saveItem=new MenuItem("保存");
saveItem.setEnabled(true);
fileMenu.add(saveItem);
fileMenu.addSeparator();
quitItem=new MenuItem("退出");
quitItem.addActionListener(this);
fileMenu.add(quitItem);
}
//初始化文件菜单
private void initFontMenu()
{
fonteditMenu=new Menu("字体");
name=new Menu("字体名");
srf=new MenuItem("serif");
dia=new MenuItem("dialog");
mon=new MenuItem("monospaced");
srf.addActionListener(this);
dia.addActionListener(this);
mon.addActionListener(this);
name.add(srf);
name.add(dia);
name.add(mon);
name.addSeparator();
fonteditMenu.add(name);
fonteditMenu.addSeparator();
myBar.add(fonteditMenu);
style=new Menu("格式");
plain=new CheckboxMenuItem("普通");
bold=new CheckboxMenuItem("粗体");
italic=new CheckboxMenuItem("斜体");
plain.addItemListener(this);
bold.addItemListener(this);
italic.addItemListener(this);
/* plain=new MenuItem("普通");
bold=new MenuItem("粗体");
italic=new MenuItem("斜体");
plain.addActionListener(this);
bold.addActionListener(this);
italic.addActionListener(this);
style.add(plain);
style.add(bold);
style.add(italic);*/
style.addSeparator();
fonteditMenu.add(style);
fonteditMenu.addSeparator();
size=new Menu("字体大小");
s1=new MenuItem("14");
s2=new MenuItem("16");
s3=new MenuItem("18");
s4=new MenuItem("25");
size.add(s1);
size.add(s2);
size.add(s3);
size.add(s4);
s1.addActionListener(this);
s2.addActionListener(this);
s3.addActionListener(this);
s4.addActionListener(this);
fonteditMenu.add(size);
fonteditMenu.addSeparator();
color=new Menu("颜色");
cr=new MenuItem("红色");
cg=new MenuItem("绿色");
cb=new MenuItem("蓝色");
cd=new MenuItem("黑色");
color.add(cr);
color.add(cg);
color.add(cb);
color.add(cd);
cr.addActionListener(this);
cg.addActionListener(this);
cb.addActionListener(this);
cd.addActionListener(this);
fonteditMenu.add(color);
fonteditMenu.addSeparator();
}
public void initPopMenu()
{
gr=new MenuItem("红色");
gg=new MenuItem("绿色");
gb=new MenuItem("蓝色");
gp=new MenuItem("粉色");
popM.add(gr);
popM.add(gg);
popM.add(gb);
popM.add(gp);
gr.addActionListener(this);
gg.addActionListener(this);
gb.addActionListener(this);
gp.addActionListener(this);
mainWorkWindow.add(popM);
}
public void actionPerformed(ActionEvent e)
{
if(!(e.getSource()instanceof MenuItem))
return;
//不是菜单项返回空
MenuItem m=(MenuItem)e.getSource();
//确定是菜单项
if(m==quitItem)
{
dispose();
System.exit(0);
}//退出菜单
else if(m==cutItem)
{
placeHolder=mainWorkWindow.getSelectedText();
mainWorkWindow.replaceRange("",mainWorkWindow.getSelectionStart(),
mainWorkWindow.getSelectionEnd());
addRecentCut(placeHolder);
}//剪切菜单
else if(m==copyItem)
{
placeHolder=mainWorkWindow.getSelectedText();
}
else if(m==pasteItem)
{
mainWorkWindow.insert(placeHolder,mainWorkWindow.getCaretPosition());
}
//insert()
else if(m==selectAllItem)
{
mainWorkWindow.selectAll();
}
else if(m==openItem)
{
Frame f=new Frame("FileDialog");//此语句
FileDialog d;
d=new FileDialog(f,"FileDialog");
d.setVisible(true);
String filename=d.getFile();//获取文件名
File openf=new File(filename);
String s="";
try{
RandomAccessFile fr=new RandomAccessFile(openf,"r");
char ch;
while((ch=fr.readChar())!=-1)
{s=s+ch;
}
//把文件内容读出
fr.close();
}catch(Exception er){}
mainWorkWindow.setText(s);//文件内容写入
}
else if(m==srf)
{
fontname1="Serif";
mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
repaint();
}
else if(m==srf)
{
fontname1="Dialog";
mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
repaint();
}
else if(m==mon)
{
fontname1="Monospaced";
mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
repaint();
}
/* else if(m==plain)
{
fontstyle1+=Font.PLAIN;
mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
repaint();
}
else if(m==bold)
{
fontstyle1+=Font.BOLD;
mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
repaint();
}
else if(m==italic)
{
fontstyle1+=Font.ITALIC;
mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
repaint();
} */
else if(m==s1)
{
fontsize1=Integer.parseInt(s1.getActionCommand());
mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
repaint();
}
else if(m==s2)
{
fontsize1=Integer.parseInt(s2.getActionCommand());
mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
repaint();
}
else if(m==s3)
{
fontsize1=Integer.parseInt(s3.getActionCommand());
mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
repaint();
}
else if(m==s4)
{
fontsize1=Integer.parseInt(s4.getActionCommand());
mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
repaint();
}
else if(m==cr)
{
mainWorkWindow.setForeground(Color.red);
}
else if(m==cg)
{
mainWorkWindow.setForeground(Color.green);
}
else if(m==cb)
{
mainWorkWindow.setForeground(Color.blue);
}
else if(m==cd)
{
mainWorkWindow.setForeground(Color.black);
}
else if(m==gr)
{
mainWorkWindow.setBackground(Color.red);
}
else if(m==gg)
{
mainWorkWindow.setBackground(Color.green);
}
else if(m==gb)
{
mainWorkWindow.setBackground(Color.blue);
}
else if(m==gp)
{
mainWorkWindow.setBackground(Color.orange);
}
else if(m==saveItem)
{
Frame f=new Frame("FileDialog");
FileDialog d;
d=new FileDialog(f,"FileDialog");
d.setVisible(true);
String filename=d.getFile();
File openf=new File(filename);
try{
RandomAccessFile fw=new RandomAccessFile(openf,"rw");
String s=mainWorkWindow.getText();
fw.writeChars(s);
fw.close();
}catch(Exception er){}
}
else if(m==cr)
{
setForeground(Color.red);
repaint();
}
}
public void itemStateChanged(ItemEvent e)
{
CheckboxMenuItem n;
if(e.getItemSelectable()instanceof CheckboxMenuItem)
{
n=(CheckboxMenuItem)e.getItemSelectable();
if(n==plain)
{
fontstyle1+=Font.PLAIN;
mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
repaint();
}
if(n==bold)
{
fontstyle1+=Font.BOLD;
mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
repaint();
}
if(n==italic)
{
fontstyle1+=Font.ITALIC;
mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
repaint();
}
}
}
private void addRecentCut(String cut)
{
recentCuts.insertElementAt(cut,0);
cutsMenu.removeAll();
for(int i=0;i<recentCuts.size();i++)
{
MenuItem item=new MenuItem((String)recentCuts.elementAt(i));
cutsMenu.add(item);
mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
}
}
}
class HandleMouse extends MouseAdapter
{
MySimpleTextEditor m_Parent;
HandleMouse(MySimpleTextEditor mf)
{
m_Parent=mf;
}
public void mouseReleased(MouseEvent e)
{
if(e.isPopupTrigger())
m_Parent.popM.show((Component)e.getSource(),e.getX(),e.getY());
}
}
class MyWindowListener extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{System.exit(1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -