📄 showtext.java
字号:
/* * ShowText.java * * Created on 2005年11月21日, 下午12:23 */package examples.mynote;/** * * @author leafyoung */import java.awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.event.*;import javax.swing.text.*;import java.awt.datatransfer.*;import java.io.*;import java.lang.*;import java.util.*;import java.awt.geom.*;public class ShowText extends JFrame implements ActionListener //ShowText类继承了JFrame类和ActionListener接口{ ///////////////////////////////////////////////////////////////////////// boolean bsaved = false; //判断文件是否保存 Color color=new Color(6); JColorChooser jColor=new JColorChooser();//颜色对话框 DefaultStyledDocument doc= new DefaultStyledDocument() ; Toolkit kit=Toolkit.getDefaultToolkit(); private FileDialog openFileDialog=new FileDialog(this,"Open File",FileDialog.LOAD);//定义各种保存对话框 private FileDialog saveFileDialog=new FileDialog(this,"Save File ",FileDialog.SAVE); private FileDialog saveAsFileDialog=new FileDialog(this,"Save File As",FileDialog.SAVE); Clipboard clipBoard=kit.getSystemClipboard(); //定义剪贴板 String fileName; /////////////////////////////////////////////////////////////////////////////// JTextPane textPane=new JTextPane(doc); //JTextPane文本 JMenuBar menuBar=new JMenuBar(); //定义 一个JMenuBar JMenu fileMenu =new JMenu("文件"); //定义菜单 JMenuItem newItem=new JMenuItem("新建"); //定义不同的菜单项,new,open,save,saveas exit JMenuItem openItem=new JMenuItem("打开"); JMenuItem saveItem=new JMenuItem("保存"); JMenuItem saveAsItem=new JMenuItem("另寸为"); JMenuItem exitItem=new JMenuItem("退出"); JMenu editMenu=new JMenu("编辑"); JMenuItem selectItem=new JMenuItem("全选"); JMenuItem copyItem=new JMenuItem("复制"); JMenuItem pasteItem=new JMenuItem("粘贴"); JMenuItem cutItem=new JMenuItem("剪切"); JMenu settingMenu=new JMenu("设置"); JMenuItem charcolorMenuItem=new JMenuItem("字体颜色"); JMenuItem fontMenuItem=new JMenuItem("字体类型"); JMenuItem sizeMenuItem=new JMenuItem("字体大小"); JMenuItem backgroundcolorMenuItem=new JMenuItem("背景颜色"); JMenu formatMenu=new JMenu("格式"); JMenuItem linespaceMenuItem=new JMenuItem("设置行间距"); JMenuItem paragraphspaceMenuItem=new JMenuItem("设置段落间距"); JMenu helpMenu=new JMenu("帮助"); JMenuItem helpMenuItem=new JMenuItem("关于..."); //////////////////////////////////////////////////////////////////////// String search=textPane.getText(); //取得当前文本所有字符 public ShowText() { Toolkit kit=Toolkit.getDefaultToolkit(); //设置JFrame的大小 Dimension screenSize=kit.getScreenSize(); int screenWidth=screenSize.width; int screenHeight=screenSize.height; setSize(screenWidth/2,screenHeight/2); setLocation(screenWidth/4,screenHeight/4); setTitle("Mynotebook"); setFont(new Font("TimesRoman",Font.PLAIN,28)) ; menuBar.add(fileMenu); //菜单栏上加各个菜单 menuBar.add(editMenu); menuBar.add(settingMenu); menuBar.add(formatMenu); menuBar.add(helpMenu); fileMenu.add(newItem); //在菜单上加上菜单项 fileMenu.add(openItem); fileMenu.add(saveItem); fileMenu.add(saveAsItem); fileMenu.add(exitItem); editMenu.add(selectItem); editMenu.add(cutItem); editMenu.add(copyItem); editMenu.add(pasteItem); settingMenu.add(charcolorMenuItem); settingMenu.add(fontMenuItem); settingMenu.add(sizeMenuItem); settingMenu.add(backgroundcolorMenuItem); formatMenu.add(linespaceMenuItem); formatMenu.add(paragraphspaceMenuItem); helpMenu.add(helpMenuItem); setJMenuBar(menuBar);//设置菜单栏 this.add(textPane); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ if(bsaved) System.exit(0); } } ); Font font = new Font("宋体", Font.PLAIN, 12); Enumeration keys = UIManager.getLookAndFeelDefaults().keys(); while (keys.hasMoreElements()) { Object key = keys.nextElement(); if (UIManager.get(key) instanceof Font) { UIManager.put(key, font); } } newItem.addActionListener(this);//注册各个监听器 openItem.addActionListener(this); saveItem.addActionListener(this); saveAsItem.addActionListener(this); exitItem.addActionListener(this); selectItem.addActionListener(this); copyItem.addActionListener(this); cutItem.addActionListener(this); pasteItem.addActionListener(this); charcolorMenuItem.addActionListener(this); backgroundcolorMenuItem.addActionListener(this); fontMenuItem.addActionListener(this); sizeMenuItem.addActionListener(this); linespaceMenuItem.addActionListener(this); paragraphspaceMenuItem.addActionListener(this); helpMenuItem.addActionListener(this); } public void actionPerformed(ActionEvent e) { Object eventSource=e.getSource(); ///////////////////////////////////////////////////// if(eventSource==newItem) //新建菜单 { if(bsaved) //如果保存则在原来的文件名下进行新的修改 { textPane.setText(" "); //内容置空 setTitle("new file"); //置新的名字 } else if(!bsaved) //没有保存 { int i=JOptionPane.showConfirmDialog(this,"文件没有保存,是否保存文件","Jishiben",JOptionPane.YES_NO_CANCEL_OPTION);//提示保存对话框 switch(i) { case JOptionPane.YES_OPTION: { saveAsFileDialog.setVisible(true); fileName=saveAsFileDialog.getDirectory()+saveAsFileDialog.getFile(); if(fileName!=null) writeFile(fileName); } case JOptionPane.NO_OPTION: { textPane.setText(" "); setTitle("new file"); } case JOptionPane.CANCEL_OPTION: { textPane.setText(" "); setTitle("new file"); } } } } //////////////////////////////////////////////////////////// else if(eventSource==openItem) //打开操作 { openFileDialog.setVisible(true); fileName=openFileDialog.getDirectory()+openFileDialog.getFile(); //取得当前文件名 if(fileName!=null) readFile(fileName); //读入操作 } ///////////////////////////////////////////////////////////////// else if(eventSource==saveItem) //保存操作 { if (fileName==null) //判断文件名是否为空 { fileSaveTo(); //调用fileSaveTo(); fileName=saveFileDialog.getDirectory()+saveFileDialog.getFile();//取得保存的文件路径和文件 if(fileName!=null) writeFile(fileName); //写文件 } if(fileName!=null) writeFile(fileName); } //////////////////////////////////////////////////////////// else if(eventSource==saveAsItem) //另存为操作 { saveAsFileDialog.setVisible(true); fileName=saveAsFileDialog.getDirectory()+saveAsFileDialog.getFile(); if(fileName!=null) writeFile(fileName); } //////////////////////////////////////////////////////////////////// else if(eventSource==selectItem) //全选操作 { textPane.selectAll(); } ///////////////////////////////////////////////////////////////////// else if(eventSource==copyItem) //复制操作 { String text=textPane.getSelectedText(); StringSelection selection=new StringSelection(text); clipBoard.setContents(selection,null); //剪贴版 } /////////////////////////////////////////////////////////////////// else if(eventSource==cutItem) //剪贴操作 { textPane.cut(); } //////////////////////////////////////////////////////////////////// else if(eventSource==pasteItem) //粘帖操作 { Transferable contents=clipBoard.getContents(this); if(contents==null) return; String text; text=" "; try{ text=(String)contents.getTransferData(DataFlavor.stringFlavor);//从剪贴板上取出 } catch(Exception exception) { } textPane.replaceSelection(text); } ////////////////////////////////////////////////////////////////////// else if(eventSource==charcolorMenuItem)//颜色选择对话框 { color = JColorChooser.showDialog( this,"",color); MutableAttributeSet normal; normal = new SimpleAttributeSet(); //关键字颜色和字体设置 StyleConstants.setForeground(normal, color); textPane.setCharacterAttributes(normal,false); } ////////////////////////////////////////////////////////// else if(eventSource==fontMenuItem)//设置字体 { font charfontwindow=new font(textPane); charfontwindow.setVisible(true); } //////////////////////////////////////////////////////////////////// else if(eventSource==sizeMenuItem)//设置字体大小 { size charsizewindow=new size(textPane); charsizewindow.setVisible(true); } /////////////////////////////////////////////////////// else if(eventSource==backgroundcolorMenuItem)//背景颜色选择对话框 { color = JColorChooser.showDialog( this,"",color); textPane.setBackground(color); } /////////////////////////////////////////////////////////////////////// else if(eventSource==linespaceMenuItem) {//设置行间距 linespace linespacewindow=new linespace(textPane); linespacewindow.setVisible(true); } //////////////////////////////////////////////////////////////////////////////// else if(eventSource==paragraphspaceMenuItem){//设置段间距 paragraphspace paragraphspacewindow=new paragraphspace(textPane); paragraphspacewindow.setVisible(true); } /////////////////////////////////////////////////////////////////////////// else if(eventSource==helpMenuItem) //help操作 { JOptionPane.showMessageDialog(null, "该记事本是第一版本,期待升级", "关于", JOptionPane.INFORMATION_MESSAGE); } else if(eventSource==exitItem) //退出操作 { if(bsaved) System.exit(0); else if (!bsaved) { int i=JOptionPane.showConfirmDialog(this,"是否保存文件","Jishiben",JOptionPane.YES_NO_CANCEL_OPTION); switch(i) { case JOptionPane.YES_OPTION: { saveAsFileDialog.setVisible(true); fileName=saveAsFileDialog.getDirectory()+saveAsFileDialog.getFile(); if(fileName!=null) writeFile(fileName); } case JOptionPane.NO_OPTION: System.exit(0); case JOptionPane.CANCEL_OPTION: System.exit(0); default: System.exit(0); } } } //////////////////////// ////////////////////////////// } /** * 调用文件保存对话框,改变文件是否保存属性 */ public void fileSaveTo() { saveFileDialog.setVisible(true); bsaved=true; } //////////////////////////////////// /////////////////// /** * 读入文件,利用字符流 */ public void readFile(String fileName) { try{ File file=new File(fileName); FileReader readIn=new FileReader(file); int size=(int)file.length(); int charsRead=0; char[] content=new char[size]; while(readIn.ready()) charsRead+=readIn.read(content,charsRead,size-charsRead); readIn.close(); textPane.setText(new String(content,0,charsRead)); } catch(IOException e) { System.out.println("Error opening file"); } } /////////////////////////////////////// /////////////////////// /** * 写入文件操作,利用FileWriter函数的write方法,写入文件 */ public void writeFile(String fileName) { try{ File file=new File(fileName); FileWriter writeOut=new FileWriter(file); writeOut.write(textPane.getText()); writeOut.close(); } catch(IOException e) { System.out.println("Error writing file"); } } /////////////////////////////////////////////////////// /////////////// }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -