import java.awt.*;
import java.awt.event.*; import java.awt.print.*; import java.awt.datatransfer.*; import java.io.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; public class JNotepad extends JPanel { JTextArea jta = new JTextArea("", 24, 40); JScrollPane jsp = new JScrollPane(jta); JMenuBar jmb = new JMenuBar(); JMenu file = new JMenu("File"); JMenu edit = new JMenu("Edit"); JMenu help = new JMenu("Help"); JMenu search = new JMenu("Search"); JToolBar toolBar = new JToolBar(); JMenuItem jmi; Clipboard clipbd = getToolkit().getSystemClipboard(); PrinterJob prtMe = PrinterJob.getPrinterJob(); String text = ""; public JNotepad() { class newL implements ActionListener { public void actionPerformed(ActionEvent e) { jta.setDocument(new PlainDocument()); } } class openL implements ActionListener { public void actionPerformed(ActionEvent e) { JFileChooser fc = new JFileChooser(); int returnVal = fc.showDialog(JNotepad.this, "Open file"); if(returnVal == JFileChooser.APPROVE_OPTION) { String file = fc.getSelectedFile().getPath(); if(file == null) { return; } try { Reader in = new FileReader(file); char[] buff = new char[4096]; int nch; while((nch = in.read(buff, 0, buff.length)) != -1) { jta.setDocument(new PlainDocument()); jta.append(new String(buff, 0, nch)); } } catch (IOException io) { System.err.println("IOException: " + io.getMessage()); } } else { return; } } } class saveL implements ActionListener { public void actionPerformed(ActionEvent e) { JFileChooser fc = new JFileChooser(); int returnVal = fc.showSaveDialog(JNotepad.this); if(returnVal == JFileChooser.APPROVE_OPTION) { String savefile = fc.getSelectedFile().getPath(); if(savefile == null) { return; } else { String docToSave = jta.getText(); if(docToSave != null) { FileOutputStream fstrm = null; BufferedOutputStream ostrm = null; try { fstrm = new FileOutputStream(savefile); ostrm = new BufferedOutputStream(fstrm); byte[] bytes = null; try { bytes = docToSave.getBytes(); } catch(Exception e1) { e1.printStackTrace(); } ostrm.write(bytes); } catch(IOException io) { System.err.println("IOException: " + io.getMessage()); } finally { try { ostrm.flush(); fstrm.close(); ostrm.close(); } catch(IOException ioe) { System.err.println("IOException: " + ioe.getMessage()); } } } } } else { return; } } } class pageSetupL implements ActionListener { public void actionPerformed(ActionEvent e) { prtMe.printDialog(); } } class printL implements ActionListener { public void actionPerformed(ActionEvent e) { try { prtMe.print(); } catch(Exception ew) { } } } class exitL implements ActionListener { public void actionPerformed(ActionEvent e) { System.exit(0); } } class copyL implements ActionListener { public void actionPerformed(ActionEvent e) { String selection = jta.getSelectedText(); StringSelection clipString = new StringSelection(selection); clipbd.setContents(clipString, clipString); } } class cutL implements ActionListener { public void actionPerformed(ActionEvent e) { String selection = jta.getSelectedText(); StringSelection clipString = new StringSelection(selection); clipbd.setContents(clipString, clipString); jta.replaceRange("", jta.getSelectionStart(), jta.getSelectionEnd()); } } class pasteL implements ActionListener { public void actionPerformed(ActionEvent e) { Transferable clipData = clipbd.getContents(JNotepad.this); try { String clipString = (String)clipData.getTransferData( DataFlavor.stringFlavor); jta.replaceRange(clipString, jta.getSelectionStart(), jta.getSelectionEnd()); } catch(Exception ex) { } } } class deleteL implements ActionListener { public void actionPerformed(ActionEvent e) { String selection = jta.getSelectedText(); jta.replaceRange("", jta.getSelectionStart(), jta.getSelectionEnd()); } } class selectAllL implements ActionListener { public void actionPerformed(ActionEvent e) { jta.selectAll(); } } class findL implements ActionListener { public void actionPerformed(ActionEvent e) { String find = ""; find = JOptionPane.showInputDialog( "Find what: "); } } class findNextL implements ActionListener { public void actionPerformed(ActionEvent e) { } } class aboutL implements ActionListener { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "JNotepad Developed By thyokel"); } } class jtaL implements ActionListener { public void actionPerformed(ActionEvent e) { } } file.add(jmi = new JMenuItem("New", KeyEvent.VK_N)); jmi.addActionListener(new newL()); file.add(jmi = new JMenuItem("Open", KeyEvent.VK_O)); jmi.addActionListener(new openL()); file.add(jmi = new JMenuItem("Save", KeyEvent.VK_S)); jmi.addActionListener(new saveL()); file.addSeparator(); file.add(jmi = new JMenuItem("Page Setup", KeyEvent.VK_G)); jmi.addActionListener(new pageSetupL()); file.add(jmi = new JMenuItem("Print", KeyEvent.VK_P)); jmi.addActionListener(new printL()); file.addSeparator(); file.add(jmi = new JMenuItem("Exit", KeyEvent.VK_X)); jmi.addActionListener(new exitL()); edit.add(jmi = new JMenuItem("Copy", KeyEvent.VK_C)); jmi.addActionListener(new copyL()); edit.add(jmi = new JMenuItem("Cut", KeyEvent.VK_T)); jmi.addActionListener(new cutL()); edit.add(jmi = new JMenuItem("Paste", KeyEvent.VK_P)); jmi.addActionListener(new pasteL()); edit.add(jmi = new JMenuItem("Delete", KeyEvent.VK_D)); jmi.addActionListener(new deleteL()); edit.addSeparator(); edit.add(jmi = new JMenuItem("Select All", KeyEvent.VK_A)); jmi.addActionListener(new selectAllL()); search.add(jmi = new JMenuItem("Find", KeyEvent.VK_F)); jmi.addActionListener(new findL()); search.add(jmi = new JMenuItem("Find Next", KeyEvent.VK_N)); jmi.addActionListener(new findNextL()); help.add(jmi = new JMenuItem("About", KeyEvent.VK_A)); jmi.addActionListener(new aboutL()); setLayout(new BorderLayout()); file.setMnemonic(KeyEvent.VK_F); jmb.add(file); edit.setMnemonic(KeyEvent.VK_E); jmb.add(edit); search.setMnemonic(KeyEvent.VK_S); jmb.add(search); jmb.add(Box.createHorizontalGlue()); help.setMnemonic(KeyEvent.VK_H); jmb.add(help); toolBar.setFloatable(true); addButtons(toolBar); add(jmb, BorderLayout.NORTH); add(toolBar, BorderLayout.CENTER); add(jsp, BorderLayout.SOUTH); jta.getCaret().setVisible(true); jta.setCaretPosition(0); } public static void main(String args[]) { JFrame f = new JFrame(); JNotepad applet = new JNotepad(); f.setTitle("JNotepad"); f.setBackground(Color.lightGray); f.getContentPane().add(applet, BorderLayout.CENTER); f.addWindowListener(new appCloseL()); f.setSize(800, 500); f.setVisible(true); f.pack(); } protected void addButtons(JToolBar toolBar) { JButton button = new JButton(new ImageIcon("images/new.gif")); button.setToolTipText("Create a new document"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jta.setDocument(new PlainDocument()); } }); toolBar.add(button); JButton button1 = new JButton(new ImageIcon("images/open.gif")); button1.setToolTipText("Open a document"); button1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JFileChooser fc = new JFileChooser(); int returnVal = fc.showDialog(JNotepad.this, "Open file"); if(returnVal == JFileChooser.APPROVE_OPTION) { String file = fc.getSelectedFile().getPath(); if(file == null) { return; } try { Reader in = new FileReader(file); char[] buff = new char[4096]; int nch; while((nch = in.read(buff, 0, buff.length)) != -1) { jta.setDocument(new PlainDocument()); jta.append(new String(buff, 0, nch)); } } catch (IOException io) { System.err.println("IOException: " + io.getMessage()); } } else { return; } } }); toolBar.add(button1); JButton button2 = new JButton(new ImageIcon("images/save.gif")); button2.setToolTipText("Save the document"); button2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JFileChooser fc = new JFileChooser(); int returnVal = fc.showSaveDialog(JNotepad.this); if(returnVal == JFileChooser.APPROVE_OPTION) { String savefile = fc.getSelectedFile().getPath(); if(savefile == null) { return; } else { String docToSave = jta.getText(); if(docToSave != null) { FileOutputStream fstrm = null; BufferedOutputStream ostrm = null; try { fstrm = new FileOutputStream(savefile); ostrm = new BufferedOutputStream(fstrm); byte[] bytes = null; try { bytes = docToSave.getBytes(); } catch(Exception e1) { e1.printStackTrace(); } ostrm.write(bytes); } catch(IOException io) { System.err.println("IOException: " + io.getMessage()); } finally { try { ostrm.flush(); fstrm.close(); ostrm.close(); } catch(IOException ioe) { System.err.println("IOException: " + ioe.getMessage()); } } } } } else { return; } } }); toolBar.add(button2); JButton button3 = new JButton(new ImageIcon("images/copy.gif")); button3.setToolTipText("Copy selected text"); button3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String selection = jta.getSelectedText(); StringSelection clipString = new StringSelection(selection); clipbd.setContents(clipString, clipString); } }); toolBar.add(button3); JButton button4 = new JButton(new ImageIcon("images/cut.gif")); button4.setToolTipText("Cut selected text"); button4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String selection = jta.getSelectedText(); StringSelection clipString = new StringSelection(selection); clipbd.setContents(clipString, clipString); jta.replaceRange("", jta.getSelectionStart(), jta.getSelectionEnd()); } }); toolBar.add(button4); JButton button5 = new JButton(new ImageIcon("images/paste.gif")); button5.setToolTipText("Paste clipboard"); button5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Transferable clipData = clipbd.getContents(JNotepad.this); try { String clipString = (String)clipData.getTransferData( DataFlavor.stringFlavor); jta.replaceRange(clipString, jta.getSelectionStart(), jta.getSelectionEnd()); } catch(Exception ex) { } } }); toolBar.add(button5); JButton button6 = new JButton(new ImageIcon("images/about.gif")); button6.setToolTipText("About application"); button6.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "JNotepad Developed By thyokel"); } }); toolBar.add(button6); } protected static final class appCloseL extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } } } Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1044913 |
|