一起学习
/版权所有helj
import java.awt.*;
import java.io.*;
import java.util.*;
//W_color;C_str;C_file;C_back;W_find;W_fond
interface I_Method
{
public void setQuit();
public void setfont(Font f);
public void setcolor(Color c);
public void Find(String find,int dire);
}
class D_color extends Dialog
{
private Button OK,Cancel;
private I_Method mp;
private Rectangle test;
private Color current= Color.black;
private Color []colors;
private Color []colors1;
private Color []colors2;
private int strlen= 250;
public D_color(Frame fr,I_Method mp,int x,int y)
{
super(fr,"调色板",true);
this.mp= mp;
colors= new Color[strlen];
colors1= new Color[strlen];
colors2= new Color[strlen];
for (int i = 0; i < strlen; i )
{
float h = ((float)i)/((float)strlen);
colors[i] = new Color(Color.HSBtoRGB(h,1.0f,1.0f));
}
for (int i = 0; i < strlen; i )
{
float h = ((float)i)/((float)strlen);
colors1[i] = new Color(Color.HSBtoRGB(1.0f,h,1.0f));
}
for (int i = 0; i < strlen; i )
{
float h = ((float)i)/((float)strlen);
colors2[i] = new Color(Color.HSBtoRGB(1.0f,1.0f,h));
}
setLayout(null);
OK= new Button("确定");
Cancel= new Button("取消");
OK.reshape(320,100,80,30);
add(OK);
Cancel.reshape(320,150,80,30);
add(Cancel);
test= new Rectangle(0,0,300,250);
reshape(x/2-210,y/2-140,420,280);
show();
}
public void update(Graphics g)
{
int y= 0;
for (int i = 0; i < strlen; i )
{
g.setColor(colors[i]);
g.fillRect(0,y,100,1);
y =1;
}
y= 0;
for (int i = 0; i < strlen; i )
{
g.setColor(colors1[i]);
g.fillRect(100,y,100,1);
y =1;
}
y= 0;
for (int i = 0; i < strlen; i )
{
g.setColor(colors2[i]);
g.fillRect(200,y,100,1);
y =1;
}
g.setColor(current);
g.fillRect(330,30,60,60);
}
public void paint(Graphics g)
{
update(g);
}
public boolean mouseMove(Event evt,int x,int y)
{
if(test.inside(x,y))
{
Graphics g1= getGraphics();
//g1.drawImage(back,oldx,oldy);
//g1.clipRect(x-3,y-3,6,6);
g1.setColor(Color.white);
g1.drawArc(x-3,y-3,6,6,60,360);
g1.drawLine(x-3,y,x 3,y);
g1.drawLine(x,y-3,x,y 3);
repaint();
//oldx= x-3;
//oldy= y-3;
return true;
}
return false;
}
public boolean mouseDown(Event evt,int x,int y)
{
if((x>=0)&&(x<=100))
{
current= colors[y];
System.out.println(y);
getGraphics().setColor(current);
getGraphics().fillRect(330,30,60,60);
return true;
}
if((x>100)&&(x<=200))
{
current= colors1[y];
getGraphics().setColor(current);
getGraphics().fillRect(330,30,60,60);
return true;
}
if((x>200)&&(x<=300))
{
current= colors2[y];
getGraphics().setColor(current);
getGraphics().fillRect(330,30,60,60);
return true;
}
return false;
}
public boolean action(Event evt,Object arg)
{
if(evt.target instanceof Button)
{
if(evt.target== OK)
{
mp.setcolor(current);
dispose();
return true;
}
if(evt.target== Cancel)
{
dispose();
return true;
}
}
return super.action(evt,arg);
}
}
class W_quick extends Window
{
MainF fr;
private Dimension sz;
private int w,h;
private int fw,fh;
private FontMetrics fm;
private int index=0;
public W_quick(MainF fr,I_Method qm,int x,int y)
{
super(fr);
this.fr= fr;
setBackground(Color.lightGray);
}
public void show(int x,int y)
{
repaint();
reshape(x,y,100,160);
show();
}
private void draw_uplines(Graphics g,int x,int y,int w1,int h1)
{
g.setColor(Color.white);
g.drawLine(x,y,x w1-1,x);
g.drawLine(x,y,x,y h1-1);
g.setColor(Color.black);
g.drawLine(x w1-1,y-1,x w1-1,y h1-1);
g.drawLine(x w1-2,y 1,x w1-2,y h1-2);
g.drawLine(x 1,y h-2,x w1-2,y h1-2);
// g.drawLine(x,y h1-1,x w1-1,y h1-1);
// g.setColor(Color.black);
// g.drawLine(x,y h1-1,x w1-1,y h1-1);
}
public void paint(Graphics g)
{
sz= size();
w= sz.width;
h= sz.height;
// g.setFont(Ffont);
fm= g.getFontMetrics();
fh=fm.getHeight();
fw= fm.charWidth('C');
g.setColor(Color.gray);
g.drawRect(10,(index-1)*fh 6,w-20,fh);
// g.setColor(Color.lightGray);
// g.drawRect(0,0,w,h);
draw_uplines(g,1,1,w-1,h-1);
g.setColor(Color.black);
g.drawString("Cut",13,fh);
g.drawString("Copy",13,2*fh);
g.drawString("Paste",13,3*fh);
g.drawString("Delete",13,4*fh);
}
public boolean mouseMove(Event evt,int x,int y)
{
for(int i=1;i<=4;i )
if((y>(i-1)*fh)&&(y<(i*fh)))
{
index= i;
repaint();
}
return super.mouseMove(evt,x,y);
}
public boolean mouseDown(Event evt,int x,int y)
{
if(y>0&&y
fh&&(y<(2*fh)))
{
fr.eitem.enable(false);
fr.eitem1.enable(false);
fr.eitem3.enable(false);
fr.eitem2.enable(true);
hide();
return true;
}
if((y>(2*fh))&&(y<(3*fh)))
{
fr.current_t.adds();
fr.eitem2.enable(false);
fr.eitem.enable(false);
fr.eitem1.enable(false);
fr.eitem3.enable(false);
hide();
return true;
}
if((y>(3*fh))&&(y<(4*fh)))
{
fr.current_t.dels();
fr.eitem3.enable(false);
fr.eitem.enable(false);
fr.eitem1.enable(false);
fr.eitem2.enable(false);
hide();
return true;
}
return super.mouseDown(evt,x,y);
}
}
class ptest extends Panel
{
String test= "ABCDabcd";
D_font ff;
public ptest(D_font ff)
{
this.ff= ff;
repaint();
}
private void draw_downlines(Graphics g,int x,int y,int w,int h)
{
g.setColor(Color.white);
g.drawLine(x 1,y h-1,x w-1,y h-1);
g.drawLine(x w-1,y h-1,x w-1,y 1);
g.setColor(Color.black);
g.drawLine(x,y,x,y h);
g.drawLine(x 1,y 1,x 1,y h-1);
g.drawLine(x,y,x w,y);
g.drawLine(x 1,y 1,x w-1,y 1);
}
public void rep()
{
repaint();
}
public void paint(Graphics g)
{
Dimension sz= size();
Point pt= location();
g.setColor(Color.darkGray);
g.drawRect(0,0,sz.width-2,sz.height-2);
g.setColor(Color.white);
g.drawLine(1,1,1,sz.height-3);
g.drawLine(1,1,sz.width-3,1);
g.drawLine(0,sz.height-1,sz.width-1,sz.height-1);
g.drawLine(sz.width-1,0,sz.width-1,sz.height-1);
draw_downlines(g,15,10,sz.width-30,sz.height-20);
g.clipRect(16,11,sz.width-31,sz.height-21);
g.setColor(Color.black);
g.setFont(ff.bf);
g.drawString(test,20,sz.height-21);
}
}
class D_font extends Dialog
{
public Font bf;
private Button OK,Cancel;
private Label l1,l2,l3;
private String items1[]={"Helvetica","Courier","TimesRoman","Dialog"};
private String items2[]={"PLAIN","BOLD","PLAIN BOLD","ITALIC","BOLD ITALIC"};
private int[] style= new int[5];
private String items3[]={"8","9","10","11","12","14","16","18","20","22","24","26","28","36","48","72"};
private TextField f1,f2,f3;
private List ll1,ll2,ll3;
private ptest test;
private I_Method im;
public void init()
{
style[0]= Font.PLAIN;
style[1]= Font.BOLD;
style[2]= Font.PLAIN Font.BOLD;
style[3]= Font.ITALIC;
style[4]= Font.BOLD Font.ITALIC;
}
public D_font(Frame fr,I_Method qm,int x,int y)
{
super(fr,"字体",true);
init();
setFont(new Font("TimesRoman",Font.PLAIN,14));
im= qm;
GridBagLayout gridBag= new GridBagLayout();
GridBagConstraints c= new GridBagConstraints();
setLayout(gridBag);
c.insets.left= 4;
c.insets.right= 4;
c.insets.bottom= 1;
c.insets.top= 1;
l1= new Label("字体:",Label.LEFT);
c.gridwidth= GridBagConstraints.REMAINDER;
c.fill= GridBagConstraints.BOTH;
c.weightx= 0.0;
c.weighty= 0.0;
c.gridx=0;
c.gridy=0;
c.gridwidth=2;
c.gridheight =1;
gridBag.setConstraints(l1,c);
add(l1);
l2= new Label("字体样式:",Label.LEFT);
c.gridwidth= GridBagConstraints.REMAINDER;
c.fill= GridBagConstraints.BOTH;
c.weightx= 0.0;
c.weighty= 0.0;
c.gridx=2;
c.gridy=0;
c.gridwidth=1;
c.gridheight =1;
gridBag.setConstraints(l2,c);
add(l2);
l3= new Label("大小:",Label.LEFT);
c.gridwidth= GridBagConstraints.REMAINDER;
c.fill= GridBagConstraints.BOTH;
c.weightx= 0.0;
c.weighty= 0.0;
c.gridx=3;
c.gridy=0;
c.gridwidth=1;
c.gridheight =1;
gridBag.setConstraints(l3,c);
add(l3);
OK= new Button("确定");
c.gridwidth= GridBagConstraints.REMAINDER;
c.fill= GridBagConstraints.BOTH;
c.weightx= 0.0;
c.weighty= 0.0;
c.gridx=4;
c.gridy=1;
c.gridwidth=1;
c.gridheight =1;
gridBag.setConstraints(OK,c);
add(OK);
f1= new TextField();
c.gridwidth= GridBagConstraints.REMAINDER;
c.fill= GridBagConstraints.BOTH;
c.weightx= 0.0;
c.weighty= 0.0;
c.gridx=0;
c.gridy=1;
c.gridwidth=2;
c.gridheight =1;
gridBag.setConstraints(f1,c);
add(f1);
f2= new TextField();
c.gridwidth= GridBagConstraints.REMAINDER;
c.fill= GridBagConstraints.BOTH;
c.weightx= 0.0;
c.weighty= 0.0;
c.gridx=2;
c.gridy=1;
c.gridwidth=1;
c.gridheight =1;
gridBag.setConstraints(f2,c);
add(f2);
f3= new TextField();
c.gridwidth= GridBagConstraints.REMAINDER;
c.fill= GridBagConstraints.BOTH;
c.weightx= 0.0;
c.weighty= 0.0;
c.gridx=3;
c.gridy=1;
c.gridwidth=1;
c.gridheight =1;
gridBag.setConstraints(f3,c);
add(f3);
Cancel= new Button("取消");
c.gridwidth= GridBagConstraints.REMAINDER;
c.fill= GridBagConstraints.BOTH;
c.weightx= 0.0;
c.weighty= 0.0;
c.gridx=4;
c.gridy=2;
c.gridwidth=1;
c.gridheight =1;
gridBag.setConstraints(Cancel,c);
add(Cancel);
ll1= new List();
for(int i=0;i=cus.index;i--)
text[i]= text[i-1];
text[cus.index]= ch;
totle ;
sc.length[cus.liney] = 1;
repaint();
if(ch=='\n')
{
cus.linex= 1;
cus.liney = 1;
cus.cusorx= 3;
cus.cusory= cus.liney*cus.h;
cus.index ;
}else
keycusor(1,0);
}
public void adds()
{
totle = sel.count;
int i;
for(i= totle-1;i>(cus.index sel.count);i--)
text[i]= text[i-sel.count];
for(int j= sel.count;j>0;j--,i--)
text[i]= sel.sels[j-1];
sel.count= 0;
repaint();
}
public void del(int de)
{
if(de<0)
{
for(int i= cus.index-1;i0)
for(int i= cus.index;i0)
{
int end= sel.index 1;
for(int i= end;icus.index)
{
if((i< totle)&&(i<=sel.index)&&(i>=cus.index))
{
sel.sels[ji]= text[i];
ji ;
g.setColor(Color.blue);
g.fillRect(paint_x,paint_y-fh,fw 1,fh);
g.setColor(Color.white);
g.drawChars(text,i,1,paint_x,paint_y);
}
}else
if((i< totle)&&(i>=sel.index)&&(i<=cus.index))
{
sel.sels[ji]= text[i];
ji ;
g.setColor(Color.blue);
g.fillRect(paint_x,paint_y-fh,fw 1,fh);
g.setColor(Color.white);
g.drawChars(text,i,1,paint_x,paint_y);
}
paint_x = fw;
}
}
public void home()
{
cus.linex= 1;
int i=0;
cus.index=0;
for(;i< cus.liney sc.offsety-1;i )
cus.index = sc.length[i];
cus.index =cus.linex-1 sc.offsetx;
cus.cusorx= 3;
cus.paint(getGraphics());
}
public void end()
{
cus.linex= sc.length[cus.liney-1]-1;
int i=0;
cus.index=0;
for(;i< cus.liney sc.offsety-1;i )
cus.index = sc.length[i];
cus.index =cus.linex-1 sc.offsetx;
cus.cusorx= (cus.linex-1)*cus.w 3;
cus.paint(getGraphics());
}
public void pagedown()
{
if(sc.maxline>2*sc.h)
{
sc.offsety = sc.h;
fr.vert.setValue(sc.offsety);
draw(getGraphics());
fr.vert.setValue(sc.offsety);
}
}
public void pageup()
{
if((sc.offsety-sc.h)>=0)
{
sc.offsety-=sc.h;
draw(getGraphics());
fr.vert.setValue(sc.offsety);
}
}
public void scrollpaint(int x1,int x2)
{
sc.offsetx= x1;
sc.offsety= x2;
// getGraphics().translate(-x1,-x2);
draw(getGraphics());
}
public void setFont(Font cuf)
{
Ffont= cuf;
//paint= true;
repaint();
}
public void setColor(Color col)
{
Bcolor= col;
// paint= true;
repaint();
}
public void rep()
{
repaint();
}
private void draw(Graphics g)
{
findtext= new String(text,0,totle);
int findi= findcount;
int aa= 0;//用于记录starti
int c1= 0;//记录行的数目
int c2= 0;//记录每行的字节数
int c3= 0; //最大列数
g.setFont(Ffont);
g.setColor(Color.white);
g.fillRect(3,2,sz.width,sz.height);
g.setColor(Bcolor);
paint_x= 3-(int)(sc.offsetx*cus.w);
paint_y= fh-(int)(sc.offsety*fh);
for(int i=0;i< totle;i )
{
if(text[i]=='\n')
{
paint_x = 3-(int)(sc.offsetx*cus.w);
paint_y =cus.h;
//i ;
sc.length[c1]= c2 1;
c1 ;
if(c2>c3)
c3= c2;
c2= 0;
}else
if(i< totle)
{
fw= fm.charWidth(text[i]);
g.setColor(Bcolor);
g.drawChars(text,i,1,paint_x,paint_y);
if(i== findindex[findi]&&bfind)
{
if(findi>0)
findi--;
g.setColor(Color.blue);
g.fillRect(paint_x,paint_y-fh 2,fw 1,fh);
g.setColor(Color.white);
g.drawChars(text,i,1,paint_x,paint_y);
}
paint_x = fw;
c2 ;
}
}
c1 = 1;
sc.maxline= c1;
cus.paint(g);
if(c3> sc.w)
fr.horz.setValues(0,sc.w,0,c3-sc.w);
if(c1> sc.h)
fr.vert.setValues(0,sc.h,0,c1-sc.h);
}
public void update(Graphics g)
{
sz= size();
g.setColor(Bcolor);
g.setFont(Ffont);
fm= g.getFontMetrics();
cus.h= fh= fm.getHeight();
cus.w= fw= fm.charWidth('A');
sc.h= (int)((sz.height-3)/fh) 1;
sc.w= (int)((sz.width-3)/fw) 1;
draw_downlines(g,0,0,sz.width,sz.height);
//g.clipRect(3,2,sz.width,sz.height);
if(select)
{
drawselect(g);
select= false;
}else
draw(g);
}
public void paint(Graphics g)
{
update(g);
}
public boolean mouseEnter(Event evt,int x,int y)
{
fr.setCursor(2);
return true;
}
public boolean mouseExit(Event evt,int x,int y)
{
fr.setCursor(0);
return true;
}
public void find(String find,int dire)
{
bfind= true;
findcount =0;
String sss= findtext;
for(int i=0;i<100;i )
findindex[i]= 0;
int j=0;
while(true)
{
if(sss.indexOf(find)==-1)
break;
findindex[j]= sss.lastIndexOf(find);
sss= sss.substring(0,findindex[j]);
j ;
findcount ;
}
repaint();
selold= true;
}
}
public class MainF extends Frame implements I_Method
{
private W_quick Lshow;
private FileDialog openDialog;
private FileDialog saveDialog;
public Scrollbar horz,vert;
private MenuBar menuBar;
private Panel File_panel,Back_p;
private Panel Back_panels[];
private int screenw,screenh;
private Color Fcolor= Color.black;
private Font Ffont= new Font("TimesRoman",Font.PLAIN,14);
private int Fwidth,Fheight;
private int[] bookmarks= new int[20];
//**************
public P_area current_t;
private int i1;
private int iii=0;
private boolean insert= false;
boolean begin= false;//用于标志是否开始选中
boolean end= false;
private int sel1= 0;
private int sel2= 0;
MenuItem eitem;
MenuItem eitem1;
MenuItem eitem2;
public MenuItem eitem3;
MainF(String title)
{
super(title);
Font font= new Font("TimesRoman",Font.BOLD,20);
setFont(font);
setBackground(Color.lightGray);
horz= new Scrollbar(Scrollbar.HORIZONTAL,0,0,0,0);
vert= new Scrollbar(Scrollbar.VERTICAL,0,0,0,0);
// show();
addMenu();
init();
Lshow= new W_quick(this,this,0,0);
openDialog= new FileDialog(this,"Open File...",FileDialog.LOAD);
saveDialog= new FileDialog(this,"Save File...",FileDialog.SAVE);
}
private void init()
{
setLayout(new BorderLayout());
File_panel= new Panel();
File_panel.setBackground(Color.lightGray);
Panel pp= new Panel();
pp.setLayout(new BorderLayout(2,2));
current_t= new P_area(this,Ffont,Fcolor,"aa","aa");
pp.add("Center",current_t);
pp.add("South",horz);
pp.add("East",vert);
add("South",File_panel);
add("Center",pp);
Dimension screen_size= Toolkit.getDefaultToolkit().getScreenSize();
screenw=screen_size.width;
screenh= screen_size.height-16;
reshape(16,16,screen_size.width-32,screen_size.height-32);
show();
}
private void addMenu()
{
menuBar= new MenuBar();
setMenuBar(menuBar);
Menu menu= new Menu("File");
Menu menu1= new Menu("Edit");
Menu menu2= new Menu("Option");
menuBar.add(menu);
menuBar.add(menu1);
menuBar.add(menu2);
MenuItem fitem= new MenuItem("New");
menu.add(fitem);
MenuItem fitem1= new MenuItem("Open");
menu.add(fitem1);
MenuItem fitem2= new MenuItem("Close");
menu.add(fitem2);
menu.addSeparator();
MenuItem fitem3= new MenuItem("Save");
menu.add(fitem3);
MenuItem fitem4= new MenuItem("Save As");
menu.add(fitem4);
menu.addSeparator();
MenuItem fitem5= new MenuItem("Quit");
menu.add(fitem5);
menu1.add(new MenuItem("Undo"));
menu1.add(new MenuItem("Redo"));
menu1.addSeparator();
eitem= new MenuItem("Cut");
menu1.add(eitem);
eitem.enable(false);
eitem1= new MenuItem("Copy");
eitem1.enable(false);
menu1.add(eitem1);
eitem2= new MenuItem("Paste");
menu1.add(eitem2);
eitem2.enable(false);
menu1.addSeparator();
eitem3= new MenuItem("Delete");
menu1.add(eitem3);
eitem3.enable(false);
MenuItem eitem6= new MenuItem("Bookmark");
menu1.add(eitem6);
menu1.addSeparator();
MenuItem eitem4= new MenuItem("Find");
menu1.add(eitem4);
MenuItem eitem5= new MenuItem("Repace");
menu1.add(eitem5);
MenuItem oitem= new MenuItem("Color");
menu2.add(oitem);
MenuItem oitem1= new MenuItem("Font");
menu2.add(oitem1);
}
public void setQuit()
{
this.dispose();
System.exit(0);
}
public void setfont(Font f)
{
Ffont= f;
current_t.setFont(f);
repaint();
}
public void setcolor(Color c)
{
Fcolor= c;
current_t.setColor(c);
repaint();
}
public void paint(Graphics g)
{
if(Ffont!= null)
g.setFont(Ffont);
}
public void read(String fn,String fd)
{
current_t.setname(fn,fd);
String line= null;
String input= null;
File s= new File(fd,fn);
FileInputStream in= null;
DataInputStream datain= null;
try
{
in= new FileInputStream(s);
datain = new DataInputStream(in);
}catch(Exception e)
{
System.out.println("Unable to open file");
return;
}
try{
while((line=datain.readLine())!= null)
{
line = "\n";
if(input== null)
input= line;
else
input = line;
}
}catch(IOException e){
System.out.println("Error in reading file");
}
current_t.open(input);
try{
in.close();
}catch(IOException e){
System.out.println("e");
}
}
public void write(String fn,String fd)
{
FileOutputStream out= null;
File s= new File(fd,fn);
try{
out= new FileOutputStream(s);
}catch(Exception e)
{
System.out.println("Unable to open file");
return;
}
PrintStream psOut=new PrintStream(out);
psOut.print(current_t.getText());///
try{
out.close();
}catch(IOException e){
System.out.println("e");
}
}
public boolean keyDown(Event evt,int key)
{
System.out.println(key);
switch(key)
{
case 1004://up
current_t.keycusor(0,-1);
return true;
case 1005://down
current_t.keycusor(0,1);
return true;
case 1006:
current_t.keycusor(-1,0);
return true;
case 1007:
current_t.keycusor(1,0);
return true;
case 8:
current_t.del(-1);
return true;
case 127:
current_t.del(1);
return true;
case 1001://end
current_t.end();
return true;
case 1000://home
current_t.home();
return true;
case 1002:
current_t.pageup();
return true;
case 1003:
current_t.pagedown();
return true;
}
// if(!current_t.border)
// current_t.addchar((char)evt.key);
// else
current_t.add((char)evt.key);
return true;
}
public boolean mouseDown(Event evt,int x,int y)
{
//****单击右键*******************不完整
eitem.enable(false);
eitem1.enable(false);
eitem3.enable(false);
current_t.bfind= false;
if((evt.modifiers&Event.META_MASK)>0)
{
Lshow.show(evt.x,evt.y);
return false;
}else
{
Lshow.hide();
begin= true;
current_t.movecusor(evt.x,evt.y);
if(current_t.selold)
{
current_t.selold= false;
current_t.selrep();
}
}
if(end)
{
// current_t.rep();
// current_t.paint =true;
end= false;
}
return false;
}
public boolean mouseDrag(Event evt,int x,int y)
{
eitem.enable(true);
eitem1.enable(true);
eitem3.enable(true);
current_t.drag(evt.x,evt.y);
//}
return true;
}
public boolean handleEvent(Event evt)
{
if(evt.id== Event.WINDOW_DESTROY)
{
W_quit aa= new W_quit(this,this);
aa.show();
return true;
}
switch(evt.id)
{
case 601:
case 602:
case 603:
case 604:
case 605:
//current_t.offsety= (vert.getValue());
// current_t.offsetx= (horz.getValue());
// current_t.paint= true;
// current_t.rep();
current_t.scrollpaint(horz.getValue(),vert.getValue());
vert.setValue(current_t.sc.offsety);
horz.setValue(current_t.sc.offsetx);
return true;
}
return super.handleEvent(evt);
}
public boolean action(Event evt,Object arg)
{
String filename;
if(evt.target instanceof MenuItem)
{
if(evt.arg.equals("New"))
{
return true;
}
if(evt.arg.equals("Open"))
{
openDialog.show();
String fn= openDialog.getFile();
String filedir= openDialog.getDirectory();
read(fn,filedir);
return true;
}
if(evt.arg.equals("Save"))
{
write(current_t.filename,current_t.filedir);
return true;
}
if(evt.arg.equals("Save As"))
{
saveDialog.show();
filename= saveDialog.getFile();
String filedir= openDialog.getDirectory();
write(filename,filedir);
return true;
}
if(evt.arg.equals("Quit"))
{
System.exit(0);
}
if(evt.arg.equals("Cut"))
{
current_t.dels();
eitem.enable(false);
eitem1.enable(false);
eitem3.enable(false);
eitem2.enable(true);
return true;
}
if(evt.arg.equals("Paste"))
{
current_t.adds();
eitem2.enable(false);
eitem.enable(false);
eitem1.enable(false);
eitem3.enable(false);
return true;
}
if(evt.arg.equals("Copy"))
{
eitem.enable(false);
eitem1.enable(false);
eitem3.enable(false);
eitem2.enable(true);
return true;
}
if(evt.arg.equals("Delete"))
{
current_t.dels();
eitem3.enable(false);
eitem.enable(false);
eitem1.enable(false);
eitem2.enable(false);
return true;
}
if(evt.arg.equals("Close"))
{
current_t.totle= 0;
current_t.rep();
return true;
}
if(evt.arg.equals("Find"))
{
new outPanel(this);
return true;
}
if(evt.arg.equals("Font"))
{
new D_font(this,this,screenw,screenh);
return true;
}
if(evt.arg.equals("Color"))
{
new D_color(this,this,screenw,screenh);
return true;
}
}
/*else if(evt.target instanceof Button)
{
} */
return false;
}
public void Find(String find,int dire)
{
current_t.find(find,dire);
System.out.println(find);
}
public static void main(String[] args)
{
MainF ff= new MainF("文本编译器");
}
}
class outPanel extends Dialog
{
MainF fr;
Label lbname; //name label
TextField tfname; //entry field
outlinePanel psex; //two outlined panels]
CheckboxGroup cbsex;
Checkbox up,down,boxc; //2 radios
Button OK, Cancel; //two pushbuttons
GridBagConstraints gbc;
GridBagLayout gbl;
int dire= 1;
public outPanel(MainF fr)
{
super(fr,"查找",true);
this.fr= fr;
setFont(new Font("Helvetica", Font.PLAIN, 12));
setBackground(Color.lightGray);
gbl =new GridBagLayout();
gbc = new GridBagConstraints();
setLayout(gbl);
gbc.ipadx = 5; //make buttons wider
gbc.ipady = 3; //make buttons higher
gbc.insets.left =6;
gbc.insets.right =6;
gbc.insets.bottom =4;
gbc.insets.top =4;
gbc.weightx =1;
gbc.weighty =1;
lbname = new Label("查找目标:"); //label
add_component(lbname, 0,0,1,1);
tfname = new TextField(20); //text entry field
add_component(tfname, 1,0,3,1);
//panel with two buttons for sex
boxc= new Checkbox("区分大小写");
add_component(boxc, 0,2,1,1);
psex = new outlinePanel(); //first panel
add_component(psex, 1,1,3,2); //insert in layout
//put two radio buttons in panel
up = psex.addCheckbox("向上", false);
down = psex.addCheckbox("向下", true);
psex.resize(148,53);
//add two command buttons to bottom
OK = new Button("找下一个"); //buttons at bottom
Cancel = new Button("取消");
add_component(OK,4,0,1,1);
add_component(Cancel,4,2,1,1);
reshape(100,100, 380,146);
show();
}
//--------------------------------------
private void add_component(Component c, int x, int y, int w, int h)
{
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = w;
gbc.gridheight =h;
add(c);
gbl.setConstraints(c, gbc);
}
//--------------------------------------
public boolean action(Event evt, Object arg)
{
if(evt.target== OK)
{
String ss= tfname.getText();
if(boxc.getState())
{
ss.toLowerCase();
fr.Find(ss,dire);
}else
fr.Find(ss,dire);
}
if (evt.target == Cancel)
{
dispose();
return true;
}
if(evt.target== up)
{
dire=-1;
}
if(evt.target== down)
{
dire= 1;
}
if(evt.target== boxc)
{
}
return super.action(evt, arg);
}
}
//*///=======================================
class outlinePanel extends Panel
{
CheckboxGroup cbg;
int yposn;
Vector cblist;
//--------------------------------------
public outlinePanel()
{
super();
cbg = new CheckboxGroup(); //for radio buttons
setLayout(null);
yposn = 3;
cblist = new Vector();
}
//--------------------------------------
public void reshape(int x, int y, int w, int h)
{
super.reshape(x,y,w,h);
for (int i=0; i< cblist.size(); i )
{
Component c = (Component)cblist.elementAt(i);
c.reshape(c.location().x, c.location().y, w-6, c.size().height);
}
}
//--------------------------------------
public Component add(Component c)
{
super.add(c);
return c;
}
//--------------------------------------
public Checkbox addCheckbox(String s, boolean checked)
{
Checkbox cb = new Checkbox(s, cbg, checked);
add(cb);
cblist.addElement(cb);
cb.reshape(3, yposn, 50, 12);
yposn = 15;
return cb;
}
//--------------------------------------
public void paint(Graphics g)
{
Dimension sz = size();
Point pt = location();
g.setColor(Color.darkGray); // graw rectangle
g.drawRect(0, 0, sz.width-2, sz.height-2);
//outline gray rectangle with 2 white inner lines
g.setColor(Color.white);
g.drawLine(1, 1, sz.width-3, 1);
g.drawLine(1, 1, 1, sz.height-3);
//and two white outer lines
g.drawLine(0,sz.height-1,sz.width-1,sz.height-1);
g.drawLine(sz.width-1, 0, sz.width-1, sz.height-1);
}
//--------------------------------------
}
下载本文示例代码
文本编辑器源文件文本编辑器源文件文本编辑器源文件文本编辑器源文件文本编辑器源文件文本编辑器源文件文本编辑器源文件文本编辑器源文件文本编辑器源文件文本编辑器源文件文本编辑器源文件文本编辑器源文件