- /**
- *@authort0nsha(liaodunxia{at}gmail.com)
- *@version1.00(20081213)
- */
- importjavax.print.attribute.HashPrintRequestAttributeSet;
- importjavax.print.attribute.PrintRequestAttributeSet;
- importjavax.swing.ButtonGroup;
- importjavax.swing.JButton;
- importjavax.swing.JDialog;
- importjavax.swing.JFileChooser;
- importjavax.swing.JFrame;
- importjavax.swing.JLabel;
- importjavax.swing.JMenu;
- importjavax.swing.JMenuBar;
- importjavax.swing.JMenuItem;
- importjavax.swing.JOptionPane;
- importjavax.swing.JRadioButton;
- importjavax.swing.JScrollPane;
- importjavax.swing.JTextArea;
- importjavax.swing.JTextField;
- importjavax.swing.KeyStroke;
- importjavax.swing.UIManager;
- importjavax.swing.text.BadLocationException;
- importjavax.swing.undo.UndoManager;
- importjava.awt.BorderLayout;
- importjava.awt.Checkbox;
- importjava.awt.Container;
- importjava.awt.Dimension;
- importjava.awt.FlowLayout;
- importjava.awt.Font;
- importjava.awt.Frame;
- importjava.awt.Graphics;
- importjava.awt.Graphics2D;
- importjava.awt.GraphicsEnvironment;
- importjava.awt.GridLayout;
- importjava.awt.List;
- importjava.awt.Panel;
- importjava.awt.Toolkit;
- importjava.awt.event.ActionEvent;
- importjava.awt.event.ActionListener;
- importjava.awt.event.InputEvent;
- importjava.awt.event.KeyEvent;
- importjava.awt.event.WindowEvent;
- importjava.awt.event.WindowListener;
- importjava.awt.print.PageFormat;
- importjava.awt.print.Printable;
- importjava.awt.print.PrinterException;
- importjava.awt.print.PrinterJob;
- importjava.io.File;
- importjava.io.FileNotFoundException;
- importjava.io.FileReader;
- importjava.io.FileWriter;
- importjava.io.IOException;
- importjava.util.Calendar;
- publicclassJPad{
- JFrameframe=newJFrame();
- JMenuBarmenuBar=newJMenuBar();
- //JTextPanetextpane=newJTextPane();
- JTextAreatextArea=newJTextArea();
- Stringfilepath="";
- Stringfilename="Untitled";
- booleandirty=false;
- StringsavedContent="";
- Stringjpad="-JPad";
- UndoManagerundoManager=newUndoManager();
- StatusBarstatusBar=newStatusBar();
- booleanshowStatusBar=true;
- classStatusBarextendsJLabel{
- /**CreatesanewinstanceofStatusBar*/
- publicStatusBar(){
- super();
- super.setPreferredSize(newDimension(100,16));
- setMessage(Calendar.getInstance().getTime().toString());
- }
- publicvoidsetMessage(Stringmessage){
- setText(""+message);
- }
- }
- classDaemonextendsThread{
- Daemon(){
- setDaemon(true);
- start();
- }
- publicvoidrun(){
- while(true){
- try{
- sleep(100);
- }catch(InterruptedExceptione){
- thrownewRuntimeException(e);
- }
- statusBar.setMessage(Calendar.getInstance().getTime()
- .toString());
- //if(savedContent!=textArea.getText()){
- if(!savedContent.equals(textArea.getText())){
- frame.setTitle("*"+filename+jpad);
- dirty=true;
- }else{
- frame.setTitle(filename+jpad);
- dirty=false;
- }
- }
- }
- }
- publicclassPrintDialogimplementsPrintable{
- publicintprint(Graphicsg,PageFormatpf,intpage)
- throwsPrinterException{
- if(page>0){/*Wehaveonlyonepage,and'page'iszero-based*/
- returnNO_SUCH_PAGE;
- }
- /*
- *User(0,0)istypicallyoutsidetheimageablearea,sowemust
- *translatebytheXandYvaluesinthePageFormattoavoid
- *clipping
- */
- Graphics2Dg2d=(Graphics2D)g;
- g2d.translate(pf.getImageableX(),pf.getImageableY());
- /*Nowweperformourrendering*/
- g.drawString(textArea.getText(),100,100);
- /*tellthecallerthatthispageispartoftheprinteddocument*/
- returnPAGE_EXISTS;
- }
- }
- classBrowserControl{
- /**
- *Displayafileinthesystembrowser.Ifyouwanttodisplayafile,
- *youmustincludetheabsolutepathname.
- *
- *@paramurl
- *thefile'surl(theurlmuststartwitheither"http://"
- *or"file://").
- */
- publicvoiddisplayURL(Stringurl){
- booleanwindows=isWindowsPlatform();
- Stringcmd=null;
- try{
- if(windows){
- //cmd='rundll32url.dll,FileProtocolHandlerhttp://...'
- cmd=WIN_PATH+""+WIN_FLAG+""+url;
- Processp=Runtime.getRuntime().exec(cmd);
- }else{
- //UnderUnix,Netscapehastoberunningforthe"-remote"
- //commandtowork.So,wetrysendingthecommandand
- //checkforanexitvalue.Iftheexitcommandis0,
- //itworked,otherwiseweneedtostartthebrowser.
- //cmd='netscape-remote
- //openURL(http://www.javaworld.com)'
- cmd=UNIX_PATH+""+UNIX_FLAG+"("+url+")";
- Processp=Runtime.getRuntime().exec(cmd);
- try{
- //waitforexitcode--ifit's0,commandworked,
- //otherwiseweneedtostartthebrowserup.
- intexitCode=p.waitFor();
- if(exitCode!=0){
- //Commandfailed,startupthebrowser
- //cmd='netscapehttp://www.javaworld.com'
- cmd=UNIX_PATH+""+url;
- p=Runtime.getRuntime().exec(cmd);
- }
- }catch(InterruptedExceptionx){
- System.err
- .println("Errorbringingupbrowser,cmd='"
- +cmd+"'");
- System.err.println("Caught:"+x);
- }
- }
- }catch(IOExceptionx){
- //couldn'texecbrowser
- System.err.println("Couldnotinvokebrowser,command="
- +cmd);
- System.err.println("Caught:"+x);
- }
- }
- /**
- *TrytodeterminewhetherthisapplicationisrunningunderWindowsor
- *someotherplatformbyexamingthe"os.name"property.
- *
- *@returntrueifthisapplicationisrunningunderaWindowsOS
- */
- publicbooleanisWindowsPlatform(){
- Stringos=System.getProperty("os.name");
- if(os!=null&&os.startsWith(WIN_ID))
- returntrue;
- else
- returnfalse;
- }
- //Usedtoidentifythewindowsplatform.
- privatestaticfinalStringWIN_ID="Windows";
- //Thedefaultsystembrowserunderwindows.
- privatestaticfinalStringWIN_PATH="rundll32";
- //Theflagtodisplayaurl.
- privatestaticfinalStringWIN_FLAG="url.dll,FileProtocolHandler";
- //Thedefaultbrowserunderunix.
- privatestaticfinalStringUNIX_PATH="netscape";
- //Theflagtodisplayaurl.
- privatestaticfinalStringUNIX_FLAG="-remoteopenURL";
- }
- classFontChooserextendsJDialog{
- //Results:
- /**Thefonttheuserhaschosen*/
- protectedFontresultFont;
- /**Theresultingfontname*/
- protectedStringresultName;
- /**Theresultingfontsize*/
- protectedintresultSize;
- /**Theresultingboldness*/
- protectedbooleanisBold;
- /**Theresultingitalicness*/
- protectedbooleanisItalic;
- //Workingfields
- /**Displaytext*/
- protectedStringdisplayText="AaBbCcYyZz";
- /**ThelistofFonts*/
- protectedStringfontList[];
- /**Thefontnamechooser*/
- protectedListfontNameChoice;
- /**Thefontsizechooser*/
- protectedListfontSizeChoice;
- /**Theboldanditalicchoosers*/
- Checkboxbold,italic;
- /**Thelistoffontsizes*/
- protectedStringfontSizes[]={"8","10","11","12","14","16",
- "18","20","24","30","36","40","48","60","72"};
- /**Theindexofthedefaultsize(e.g.,14point==4)*/
- protectedstaticfinalintDEFAULT_SIZE=4;
- /**
- *Thedisplayarea.UseaJLabelastheAWTlabeldoesn'talwayshonor
- *setFont()inatimelyfashion:-)
- */
- protectedJLabelpreviewArea;
- /**
- *ConstructaFontChooser--Setstitleandgetsarrayoffontsonthe
- *system.BuildsaGUItolettheuserchooseonefontatonesize.
- */
- publicFontChooser(Framef){
- super(f,"FontChooser",true);
- Containercp=getContentPane();
- Paneltop=newPanel();
- top.setLayout(newFlowLayout());
- fontNameChoice=newList(8);
- top.add(fontNameChoice);
- Toolkittoolkit=Toolkit.getDefaultToolkit();
- //ForJDK1.1:returnsabout10names(Serif,SansSerif,etc.)
- //fontList=toolkit.getFontList();
- //ForJDK1.2:amuchlongerlist;mostofthenamesthatcome
- //withyourOS(e.g.,Arial),plustheSun/Javaones(Lucida,
- //LucidaBright,LucidaSans...)
- fontList=GraphicsEnvironment.getLocalGraphicsEnvironment()
- .getAvailableFontFamilyNames();
- for(inti=0;i<fontList.length;i++)
- fontNameChoice.add(fontList[i]);
- fontNameChoice.select(0);
- fontSizeChoice=newList(8);
- top.add(fontSizeChoice);
- for(inti=0;i<fontSizes.length;i++)
- fontSizeChoice.add(fontSizes[i]);
- fontSizeChoice.select(DEFAULT_SIZE);
- cp.add(top,BorderLayout.NORTH);
- Panelattrs=newPanel();
- top.add(attrs);
- attrs.setLayout(newGridLayout(0,1));
- attrs.add(bold=newCheckbox("Bold",false));
- attrs.add(italic=newCheckbox("Italic",false));
- previewArea=newJLabel(displayText,JLabel.CENTER);
- previewArea.setSize(200,50);
- cp.add(previewArea,BorderLayout.CENTER);
- Panelbot=newPanel();
- JButtonokButton=newJButton("Apply");
- bot.add(okButton);
- okButton.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEvente){
- previewFont();
- dispose();
- setVisible(false);
- }
- });
- JButtonpvButton=newJButton("Preview");
- bot.add(pvButton);
- pvButton.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEvente){
- previewFont();
- }
- });
- JButtoncanButton=newJButton("Cancel");
- bot.add(canButton);
- canButton.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEvente){
- //Setallvaluestonull.Better:restoreprevious.
- resultFont=null;
- resultName=null;
- resultSize=0;
- isBold=false;
- isItalic=false;
- dispose();
- setVisible(false);
- }
- });
- cp.add(bot,BorderLayout.SOUTH);
- previewFont();//ensureviewisuptodate!
- pack();
- setLocation(100,100);
- }
- /**
- *Calledfromtheactionhandlerstogetthefontinfo,buildafont,
- *andsetit.
- */
- protectedvoidpreviewFont(){
- resultName=fontNameChoice.getSelectedItem();
- StringresultSizeName=fontSizeChoice.getSelectedItem();
- intresultSize=Integer.parseInt(resultSizeName);
- isBold=bold.getState();
- isItalic=italic.getState();
- intattrs=Font.PLAIN;
- if(isBold)
- attrs=Font.BOLD;
- if(isItalic)
- attrs|=Font.ITALIC;
- resultFont=newFont(resultName,attrs,resultSize);
- //System.out.println("resultName="+resultName+";"+
- //"resultFont="+resultFont);
- previewArea.setFont(resultFont);
- pack();//ensureDialogisbigenough.
- }
- /**Retrievetheselectedfontname.*/
- publicStringgetSelectedName(){
- returnresultName;
- }
- /**Retrievetheselectedsize*/
- publicintgetSelectedSize(){
- returnresultSize;
- }
- /**Retrievetheselectedfont,ornull*/
- publicFontgetSelectedFont(){
- returnresultFont;
- }
- }
- classFindReplaceextendsJDialog{
- JLabellabelFindWhat=newJLabel("Findwhat:");
- JLabellabelReplaceWith=newJLabel("Repalcewith:");
- JTextFieldtextFieldFind=newJTextField();
- JTextFieldtextFieldReplace=newJTextField();
- JButtonfind=newJButton("FindNext");
- JRadioButtonforward=newJRadioButton("Forward");
- JRadioButtonbackward=newJRadioButton("Backward");
- GridLayoutgridLayout=newGridLayout(4,3);
- JButtoncancel=newJButton("Cancel");
- ButtonGroupbuttonGroup=newButtonGroup();
- CheckboxcaseSensitive=newCheckbox("Casesensitive");
- JButtonreplace=newJButton("Replace");
- intselectionStart=textArea.getCaretPosition();
- intselectionEnd=textArea.getCaretPosition();
- FindReplace(Frameowner,Stringtitle,booleanmodal){
- super(owner,title,modal);
- this.setSize(400,120);
- Containercp=this.getContentPane();
- cp.setLayout(gridLayout);
- buttonGroup.add(backward);
- buttonGroup.add(forward);
- cp.add(labelFindWhat);
- cp.add(textFieldFind);
- cp.add(find);
- cp.add(labelReplaceWith);
- cp.add(textFieldReplace);
- cp.add(replace);
- cp.add(backward);
- cp.add(forward);
- cp.add(cancel);
- cp.add(caseSensitive);
- pack();
- forward.setSelected(true);
- cancel.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- FindReplace.this.setVisible(false);
- }
- });
- find.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- intfindLen=textFieldFind.getText().length();
- inttextLen=textArea.getText().length();
- intselectionStart=textArea.getCaretPosition();
- intselectionEnd=textArea.getCaretPosition();
- System.out.println("selectionEnd="+selectionEnd
- +",selectionEnd="+selectionEnd);
- if(caseSensitive.getState()==true){
- if(forward.isSelected()){
- while((selectionStart+=findLen)<=(textLen-findLen)){
- try{
- if(textArea.getText(selectionStart,
- findLen).equals(
- textFieldFind.getText())){
- selectionEnd=selectionStart+findLen;
- textArea.select(selectionStart,
- selectionEnd);
- break;
- }
- }catch(BadLocationExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- }
- }elseif(backward.isSelected()){
- while((selectionEnd-=findLen)>=findLen){
- try{
- selectionStart=selectionEnd-findLen;
- if(textArea.getText(selectionStart,
- findLen).equals(
- textFieldFind.getText())){
- textArea.select(selectionStart,
- selectionEnd);
- break;
- }
- }catch(BadLocationExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- }
- }
- }elseif(caseSensitive.getState()==false){
- if(forward.isSelected()){
- while((selectionStart+=findLen)<=(textLen-findLen)){
- try{
- if(textArea.getText(selectionStart,
- findLen).toLowerCase().equals(
- textFieldFind.getText()
- .toLowerCase())){
- selectionEnd=selectionStart+findLen;
- textArea.select(selectionStart,
- selectionEnd);
- break;
- }
- }catch(BadLocationExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- }
- }elseif(backward.isSelected()){
- while((selectionEnd-=findLen)>=findLen){
- try{
- selectionStart=selectionEnd-findLen;
- if(textArea.getText(selectionStart,
- findLen).toLowerCase().equals(
- textFieldFind.getText()
- .toLowerCase())){
- textArea.select(selectionStart,
- selectionEnd);
- break;
- }
- }catch(BadLocationExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- }
- }
- }
- if((selectionStart>(textArea.getText().length()-findLen))
- ||(selectionEnd<findLen)){
- JOptionPane.showMessageDialog(FindReplace.this,
- "Cannotfind/""+textFieldFind.getText()
- +"/"");
- }
- }
- });
- replace.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- textArea.replaceSelection(textFieldReplace.getText());
- }
- });
- }
- }
- booleanaskSaved(){
- booleanret=false;
- if(dirty){
- intoption=JOptionPane.showConfirmDialog(frame,
- "Contenthasbeenchanged,doyouwanttosave?");
- if(option==JOptionPane.YES_OPTION){
- saveAs(false);
- ret=true;
- }elseif(option==JOptionPane.NO_OPTION){
- ret=true;
- }
- }else{
- ret=true;
- }
- returnret;
- }
- voidsaveAs(booleanisSaveAs){
- if(isSaveAs){
- JFileChooserchooser=newJFileChooser();
- intreturnVal=chooser.showSaveDialog(frame);
- if(returnVal==JFileChooser.APPROVE_OPTION){
- filename=chooser.getSelectedFile().getName();
- filepath=chooser.getSelectedFile().getPath();
- try{
- FileWriterwriter=newFileWriter(filepath);
- writer.write(textArea.getText());
- writer.close();
- savedContent=textArea.getText();
- }catch(IOExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- }
- }else{
- if(filepath.length()!=0){
- try{
- FileWriterwriter=newFileWriter(filepath);
- writer.write(textArea.getText());
- writer.close();
- savedContent=textArea.getText();
- }catch(IOExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- }else{
- JFileChooserchooser=newJFileChooser();
- intreturnVal=chooser.showSaveDialog(frame);
- if(returnVal==JFileChooser.APPROVE_OPTION){
- filename=chooser.getSelectedFile().getName();
- filepath=chooser.getSelectedFile().getPath();
- try{
- FileWriterwriter=newFileWriter(filepath);
- writer.write(textArea.getText());
- writer.close();
- savedContent=textArea.getText();
- }catch(IOExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- }
- }
- }
- frame.setTitle(filename+jpad);
- }
- voidopen(){
- JFileChooserchooser=newJFileChooser();
- intreturnVal=chooser.showOpenDialog(frame);
- if(returnVal==JFileChooser.APPROVE_OPTION){
- filepath=chooser.getSelectedFile().getPath();
- filename=chooser.getSelectedFile().getName();
- try{
- intoffset=0;
- intlength=(int)(newFile(filepath)).length();
- char[]cbuf=newchar[length];
- FileReaderreader=newFileReader(filepath);
- while(reader.ready()){
- reader.read(cbuf,offset,length);
- }
- reader.close();
- textArea.setText(newString(cbuf));
- savedContent=newString(cbuf);
- }catch(FileNotFoundExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }catch(IOExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- }
- frame.setTitle(filename+jpad);
- }
- voidjnew(){
- savedContent="";
- textArea.setText("");
- filename="Untitled";
- frame.setTitle(filename+jpad);
- }
- classFrameLimplementsWindowListener{
- @Override
- publicvoidwindowActivated(WindowEvente){
- //TODOAuto-generatedmethodstub
- }
- @Override
- publicvoidwindowClosed(WindowEvente){
- //TODOAuto-generatedmethodstub
- }
- @Override
- publicvoidwindowClosing(WindowEvente){
- //TODOAuto-generatedmethodstub
- if(dirty){
- if(askSaved()){
- System.exit(0);
- }
- }else{
- System.exit(0);
- }
- }
- @Override
- publicvoidwindowDeactivated(WindowEvente){
- //TODOAuto-generatedmethodstub
- }
- @Override
- publicvoidwindowDeiconified(WindowEvente){
- //TODOAuto-generatedmethodstub
- }
- @Override
- publicvoidwindowIconified(WindowEvente){
- //TODOAuto-generatedmethodstub
- }
- @Override
- publicvoidwindowOpened(WindowEvente){
- //TODOAuto-generatedmethodstub
- }
- }
- publicJPad(){
- newDaemon();
- textArea.setText("");
- frame.setTitle(filename+jpad);
- frame.setSize(640,480);
- //addclosehandle
- frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
- frame.addWindowListener(newFrameL());
- //addmenufileMenu
- JMenufileMenu=newJMenu("File");
- fileMenu.setMnemonic('F');//make'F'underlined.
- menuBar.add(fileMenu);
- //addmenuitemfileMenu-->new
- JMenuItemfileNew=newJMenuItem("New",'N');
- fileNew.setAccelerator(KeyStroke.getKeyStroke('N',
- InputEvent.CTRL_MASK,true));
- fileNew.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- //JOptionPane.showMessageDialog(null,"fileMenunew");
- if(askSaved()){
- jnew();
- }
- }
- });
- fileMenu.add(fileNew);
- //addmenuitemfileMenu-->open
- JMenuItemfileOpen=newJMenuItem("Open...",'O');
- fileOpen.setAccelerator(KeyStroke.getKeyStroke('O',
- InputEvent.CTRL_MASK,true));
- fileOpen.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- //JOptionPane.showMessageDialog(null,"fileMenuopen");
- if(askSaved()){
- open();
- }
- }
- });
- fileMenu.add(fileOpen);
- //addmenuitemfileMenu-->save
- JMenuItemfileSave=newJMenuItem("Save",'S');
- fileSave.setAccelerator(KeyStroke.getKeyStroke('S',
- InputEvent.CTRL_MASK,true));
- fileSave.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- //JOptionPane.showMessageDialog(null,"fileMenusave");
- saveAs(false);
- }
- });
- fileMenu.add(fileSave);
- //addmenuitemfileMenu-->saveas
- JMenuItemfileSaveAs=newJMenuItem("SaveAs...",'A');
- fileSaveAs.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- //JOptionPane.showMessageDialog(null,"fileMenusaveas");
- saveAs(true);
- }
- });
- fileMenu.add(fileSaveAs);
- //addmenuitemfileMenu-->separator
- fileMenu.addSeparator();
- //addmenuitemfileMenu-->print
- JMenuItemfilePrint=newJMenuItem("Print...",'P');
- filePrint.setAccelerator(KeyStroke.getKeyStroke('P',
- InputEvent.CTRL_MASK,true));
- filePrint.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- //JOptionPane.showMessageDialog(null,"fileMenuprint");
- try{
- Stringcn=UIManager.getSystemLookAndFeelClassName();
- UIManager.setLookAndFeel(cn);//UsethenativeL&F
- }catch(Exceptioncnf){
- }
- PrinterJobjob=PrinterJob.getPrinterJob();
- PrintRequestAttributeSetaset=newHashPrintRequestAttributeSet();
- PageFormatpf=job.pageDialog(aset);
- job.setPrintable(newPrintDialog(),pf);
- booleanok=job.printDialog(aset);
- if(ok){
- try{
- job.print(aset);
- }catch(PrinterExceptionex){
- /*Thejobdidnotsuccessfullycomplete*/
- }
- }
- }
- });
- fileMenu.add(filePrint);
- //addmenuitemfileMenu-->separator
- fileMenu.addSeparator();
- //addmenuitemfileMenu-->exit
- JMenuItemfileExit=newJMenuItem("Exit",'X');
- fileExit.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- //JOptionPane.showMessageDialog(null,"fileMenuexit");
- if(askSaved()){
- System.exit(0);
- }
- }
- });
- fileMenu.add(fileExit);
- //addmenuedit
- JMenueditMenu=newJMenu("Edit");
- editMenu.setMnemonic('E');
- menuBar.add(editMenu);
- //addmenuitemedit-->undotyping
- JMenuItemeditUndoTyping=newJMenuItem("UndoTyping",'U');
- editUndoTyping.setAccelerator(KeyStroke.getKeyStroke('Z',
- InputEvent.CTRL_MASK,true));
- editUndoTyping.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- if(undoManager.canUndo()){
- undoManager.undo();
- }
- }
- });
- editMenu.add(editUndoTyping);
- //addmenuitemedit-->separator
- editMenu.addSeparator();
- //addmenuitemedit-->cut
- JMenuItemeditCut=newJMenuItem("Cut",'T');
- editCut.setAccelerator(KeyStroke.getKeyStroke('X',
- InputEvent.CTRL_MASK,true));
- editCut.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- textArea.cut();
- }
- });
- editMenu.add(editCut);
- //addmenuitemedit-->copy
- JMenuItemeditCopy=newJMenuItem("Copy",'C');
- editCopy.setAccelerator(KeyStroke.getKeyStroke('C',
- InputEvent.CTRL_MASK,true));
- editCopy.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- textArea.copy();
- }
- });
- editMenu.add(editCopy);
- //addmenuitemedit-->paste
- JMenuItemeditPaste=newJMenuItem("Paste",'P');
- editPaste.setAccelerator(KeyStroke.getKeyStroke('V',
- InputEvent.CTRL_MASK,true));
- editPaste.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- textArea.paste();
- }
- });
- editMenu.add(editPaste);
- //addmenuitemedit-->delete
- JMenuItemeditDelete=newJMenuItem("Delete",'L');
- editDelete
- .setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));
- editDelete.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- textArea.replaceSelection(null);
- }
- });
- editMenu.add(editDelete);
- //addmenuitemedit-->separator
- editMenu.addSeparator();
- //addmenuitemedit-->find
- JMenuItemeditFind=newJMenuItem("Find/Replace...",'F');
- editFind.setAccelerator(KeyStroke.getKeyStroke('F',
- InputEvent.CTRL_MASK,true));
- editFind.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- //JOptionPane.showMessageDialog(null,"editfind");
- FindReplacefindReplace=newFindReplace(frame,"Find",false);
- findReplace.setVisible(true);
- }
- });
- editMenu.add(editFind);
- //addmenuitemedit-->goto
- JMenuItemeditGoto=newJMenuItem("GoTo...",'G');
- editGoto.setAccelerator(KeyStroke.getKeyStroke('G',
- InputEvent.CTRL_MASK,true));
- editGoto.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- if(!textArea.getLineWrap()){
- Strings=JOptionPane.showInputDialog(null,
- "Linenumber:","Gotothefollowingrow",
- JOptionPane.QUESTION_MESSAGE);
- //pressCancelwillraiseaNullPointerException
- if(s!=null){
- try{
- inti=Integer.parseInt(s);
- if(i>textArea.getLineCount()){
- JOptionPane.showMessageDialog(null,
- "Rowoutofrange.","JPad-GoTo",
- JOptionPane.NO_OPTION);
- }else{
- textArea.setCaretPosition(textArea.getText()
- .indexOf("/n",i-1)+1);
- }
- }catch(NumberFormatExceptionnfe){
- JOptionPane.showMessageDialog(null,
- "InvalidNumber!");
- }
- }
- }else{
- JOptionPane.showMessageDialog(null,
- "Pleaseturnoffautowrapfirst!");
- }
- }
- });
- editMenu.add(editGoto);
- //addmenuitemseparator
- editMenu.addSeparator();
- //addmenuitemedit-->selectall
- JMenuItemeditSelectAll=newJMenuItem("SelectAll",'A');
- editSelectAll.setAccelerator(KeyStroke.getKeyStroke('A',
- InputEvent.CTRL_MASK,true));
- editSelectAll.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- textArea.selectAll();
- }
- });
- editMenu.add(editSelectAll);
- //addmenuitemedit-->timedate
- JMenuItemeditTimeDate=newJMenuItem("Time/Date",'D');
- editTimeDate.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0));
- editTimeDate.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- textArea.replaceSelection(Calendar.getInstance().getTime()
- .toString());
- }
- });
- editMenu.add(editTimeDate);
- //addmenuoption
- JMenuoptionMenu=newJMenu("Option");
- optionMenu.setMnemonic('O');
- menuBar.add(optionMenu);
- //addmenuitemoption-->autowrap
- JMenuItemoptionAutoWrap=newJMenuItem("AutoWrap",'W');
- optionAutoWrap.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- textArea.setLineWrap(!textArea.getLineWrap());
- }
- });
- optionMenu.add(optionAutoWrap);
- //addmenuitemoption-->autowrap
- JMenuItemoptionFont=newJMenuItem("Font...",'F');
- optionFont.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- //JOptionPane.showMessageDialog(null,"optionfont");
- FontChooserfc=newFontChooser(frame);
- fc.setVisible(true);
- Fontf=fc.getSelectedFont();
- textArea.setFont(f);
- }
- });
- optionMenu.add(optionFont);
- //addmenuview
- JMenuviewMenu=newJMenu("View");
- viewMenu.setMnemonic('V');
- menuBar.add(viewMenu);
- //addmenuitemview-->statusbar
- JMenuItemviewStatusBar=newJMenuItem("StatusBar",'S');
- viewStatusBar.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- showStatusBar=!showStatusBar;
- statusBar.setVisible(showStatusBar);
- }
- });
- viewMenu.add(viewStatusBar);
- //addmenuhelp
- JMenuhelpMenu=newJMenu("Help");
- helpMenu.setMnemonic('H');
- menuBar.add(helpMenu);
- //addmenuitemhelp-->helpcontents
- JMenuItemhelpContents=newJMenuItem("HelpContents",'H');
- helpContents.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- BrowserControlbc=newBrowserControl();
- bc.displayURL("http://blog.youkuaiyun.com/t0nsha");
- }
- });
- helpMenu.add(helpContents);
- //addmenuitemseparator
- helpMenu.addSeparator();
- //addmenuitemhelp-->aboutjpad
- JMenuItemhelpAboutJPad=newJMenuItem("AboutJPad",'A');
- helpAboutJPad.addActionListener(newActionListener(){
- publicvoidactionPerformed(ActionEventae){
- JOptionPane
- .showMessageDialog(
- null,
- "version1.00(20081213)/n(c)t0nsha/nliaodunxia{at}gmail.com",
- "AboutJPad",JOptionPane.INFORMATION_MESSAGE);
- }
- });
- helpMenu.add(helpAboutJPad);
- //addmenubar
- frame.setJMenuBar(menuBar);
- frame.getContentPane().add(statusBar,BorderLayout.SOUTH);
- //addtextarea
- textArea.getDocument().addUndoableEditListener(undoManager);
- frame.add(newJScrollPane(textArea));
- frame.setVisible(true);
- }
- publicstaticvoidmain(String[]args){
- newJPad();
- }
- }
jar文件匿名提取连接 http://pickup.mofile.com/1651850105553469