参考文档http://wenku.baidu.com/view/45450b0f79563c1ec4da7101.html
1、命令:
D:\desktop>javac -d ./ JNotePad.java
D:\desktop>jar cvf jnotepad.jar desktop
added manifest
adding: desktop/(in = 0) (out= 0)(stored 0%)
adding: desktop/11/(in = 0) (out= 0)(stored 0%)
adding: desktop/JNotePad$1.class(in = 520) (out= 342)(deflated 34%)
打开jnotepad.jar\META-INF\MAINIFEST.MF添加:
Main-Class: desktop.JNotePad
2、记事本代码:
package desktop; import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.KeyStroke; import javax.swing.ScrollPaneConstants; /** * @author timeriver.wang * @date 2013-01-04 6:23:45 PM */ public class JNotePad extends JFrame { private JMenu fileMenu;//should be filed or local variables? private JMenuItem openMenuItem; private JMenuItem saveMenuItem; private JMenuItem saveAsMenuItem; private JMenuItem closeMenuItem; private JMenuItem aboutMenuItem; private JTextArea textArea; private JFileChooser fileChooser; private boolean isChanged = false; public JNotePad() { super( "new txt file" ); setUI(); setEventListener(); setVisible( true ); } public static void main( String[] args ) { new JNotePad(); } private void setUI() { setSize( 640, 480 ); JMenuBar menuBar = new JMenuBar(); //-------------------------------// //file Menu //-------------------------------// fileMenu = new JMenu( "file" ); openMenuItem = new JMenuItem( "open" ); // shortcut key,VK_O-->'O',CTRL_MASK-->"ctrl" openMenuItem.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_O, InputEvent.CTRL_MASK ) ); saveMenuItem = new JMenuItem( "save" ); saveMenuItem.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_S, InputEvent.CTRL_MASK ) ); saveAsMenuItem = new JMenuItem( "save as" ); closeMenuItem = new JMenuItem( "close" ); closeMenuItem.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_Q, InputEvent.CTRL_MASK ) ); fileMenu.add( openMenuItem ); fileMenu.addSeparator(); fileMenu.add( saveMenuItem ); fileMenu.addSeparator(); fileMenu.add( saveAsMenuItem ); fileMenu.addSeparator(); fileMenu.add( closeMenuItem ); //-------------------------------// //help Menu //-------------------------------// JMenu helpMenu = new JMenu( "help" ); aboutMenuItem = new JMenuItem( "about" ); helpMenu.add( aboutMenuItem ); // menuBar.add( fileMenu ); menuBar.add( helpMenu ); // setJMenuBar( menuBar ); // textArea textArea = new JTextArea(); textArea.setLineWrap( true ); JScrollPane panel = new JScrollPane( textArea, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED ); Container contentPane = getContentPane(); contentPane.add( panel, BorderLayout.CENTER ); // fileChooser = new JFileChooser(); } private void setEventListener() { addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e ) { closeFile(); } } ); openMenuItem.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e ) { openFile(); } } ); saveMenuItem.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e ) { saveFile(); } } ); saveAsMenuItem.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e ) { saveFileAs(); } } ); closeMenuItem.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e ) { closeFile(); } } ); aboutMenuItem.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e ) { JOptionPane.showOptionDialog( null, "java desktop demo,jar,started by bat command", "about JNotePad", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null ); } } ); // key event textArea.addKeyListener( new KeyAdapter() { public void keyTyped( KeyEvent e ) { } } ); // mouse event textArea.addMouseListener( new MouseAdapter() { public void mouseReleased( MouseEvent e ) { } public void mouseClicked( MouseEvent e ) { } } ); } private void openFile() { if ( !isChanged ) { open(); }else { int option = JOptionPane.showConfirmDialog( null, "file is changed, do you want to save?", "save file?", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null ); if(option == JOptionPane.YES_OPTION){ saveFile(); }else{ open(); } } } private void open() { int option = fileChooser.showDialog( null, null ); if ( option == JFileChooser.APPROVE_OPTION ) { try { BufferedReader buf = new BufferedReader( new FileReader( fileChooser.getSelectedFile() ) ); setTitle( fileChooser.getSelectedFile().toString() ); textArea.setText( "" ); isChanged = true; String lineSeparator = System.getProperty( "line.separator" ); String text; while ( ( text = buf.readLine() ) != null ) { textArea.append( text ); textArea.append( lineSeparator ); } buf.close(); } catch ( IOException e ) { JOptionPane.showMessageDialog( null, e.toString(), "open file fail!", JOptionPane.ERROR_MESSAGE ); } } } private void saveFile() { File file = new File( getTitle() ); if ( !file.exists() ) { saveFileAs(); }else { try { BufferedWriter buf = new BufferedWriter( new FileWriter( file ) ); buf.write( textArea.getText() ); buf.close(); isChanged = false; } catch ( IOException e ) { JOptionPane.showMessageDialog( null, e.toString(), "write file fail!", JOptionPane.ERROR_MESSAGE ); } } } private void saveFileAs() { int option = fileChooser.showSaveDialog( null ); if ( option == JFileChooser.APPROVE_OPTION ) { File file = fileChooser.getSelectedFile(); setTitle( file.toString() ); try { file.createNewFile(); saveFile(); } catch ( IOException e ) { JOptionPane.showMessageDialog( null, e.toString(), "save as file fail!", JOptionPane.ERROR_MESSAGE ); } } } private void closeFile() { if ( isChanged ) { dispose(); }else { int option = JOptionPane.showConfirmDialog( null, "file has changed,save?", "save file?", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null ); if(option == JOptionPane.YES_OPTION){ saveFile(); }else{ dispose(); } } } }
相关推荐
总的来说,这个"java记事本 源代码"项目涵盖了以下核心Java技术: 1. Java基础:变量、控制结构、类和对象。 2. Swing库:用于创建GUI界面,如JFrame、JButton、JTextArea等组件的使用。 3. 文件I/O:使用java.io包...
在Java编程领域,创建一个简单的记事本程序是一个常见的学习项目,它可以帮助初学者理解GUI(图形用户界面)编程、事件处理和文件操作等核心概念。下面我们将深入探讨如何使用Java来实现这样一个记事本程序。 首先...
Java Swing 是Java GUI(图形用户界面)库的一部分,它提供了丰富的组件和工具,用于构建桌面应用程序,包括我们这里讨论的“简单记事本”。在Java中实现记事本功能,通常会涉及到以下几个核心知识点: 1. **Swing...
在Java编程领域,开发一个简单的记事本程序是一项常见的练习,它可以帮助初学者理解GUI(图形用户界面)设计、事件处理以及文本操作等基础知识。在这个名为"Java简单记事本程序"的项目中,我们将探讨如何利用Java ...
【标题】:“java记事本源代码”是一个关于Java编程的项目,主要目的是实现一个基本的文本编辑器,也就是我们日常所说的记事本程序。这个项目可能是某位开发者或者学生为了学习Java编程或者完成课程作业而创建的。...
在IT行业中,编程是一项核心技能,而Java作为广泛使用的编程语言之一,被应用于各种软件开发,包括桌面应用程序。本项目就是一个使用Java实现的记事本程序,它充分展示了Java在GUI(图形用户界面)设计和文件操作上...
综上所述,这个“java写的日历记事本程序”涵盖了Java GUI编程、事件处理、日期时间操作、文件I/O、数据结构与算法等多个核心Java编程和技术。开发者通过这些技术实现了日历展示、记事添加、修改和删除等功能,为...
这个记事本程序用Java编程语言编写,展现了Java在创建桌面应用程序方面的强大能力。以下是对该程序各个关键知识点的详细阐述: 1. **Java基础**:Java是一种跨平台的面向对象的编程语言,具有“一次编写,到处运行...
【标题】与【描述】中的"java编程-记事本-全部功能都实现.doc"表明这是一个关于使用Java编程实现一个记事本程序的文档。这个程序可能包含了创建、打开、保存、打印等基本文本编辑器的功能。 【标签】中提到的"java ...
总的来说,这个Java编写的记事本源代码是一个很好的学习资源,涵盖了GUI编程、文件操作、事件处理等多个Java核心概念。对于想要深入学习Java桌面应用开发的人来说,它提供了实践和理解这些概念的实例。
首先,在论文的摘要部分,作者强调了程序的基本功能,包括新建、打开、保存文件,以及文本的复制、粘贴、剪切等操作,这些都是一个记事本程序的核心功能。通过使用Java Swing库,作者不仅能够实现这些基本的文本编辑...
在Java编程语言中,开发...通过学习和分析这个记事本程序的源代码,初学者不仅可以了解Java GUI编程的基本概念,还能掌握文件操作、事件处理和异常处理等核心技能,这对于进一步学习更复杂的Java应用开发是非常有益的。
这个程序,如标题所述,可以作为一个实用工具,允许用户创建、编辑和保存文本文件,类似于我们日常使用的桌面记事本应用程序。 首先,我们需要理解Java的基础知识,包括类、对象、方法、变量等概念。在Java中,...
【标题】"广东工业大学JAVA第三次作业-山寨记事本(代码+报告)"涉及的知识点主要集中在Java编程语言的应用上,特别是针对简单的桌面应用程序开发。这个作业要求学生模仿常见的记事本程序,实现一个功能类似的基本...
描述中的"基于Java的记事本(含代码和报告)"与标题一致,进一步强调了项目的核心内容——一个用Java编写的记事本程序,同时提供了源代码和相关的技术文档。这通常意味着用户可以查看、学习甚至修改代码,了解如何...
这个程序的核心是利用Java的Swing库来创建交互式的用户界面,同时结合文件输入输出流(File I/O streams)处理文本数据的读取和写入,以实现编辑、保存、另存为、查找和替换等基本操作。下面将详细探讨这些知识点。 ...
Swing是Java Foundation Classes (JFC)的一部分,提供了丰富的组件来创建桌面应用程序的GUI。它包括诸如JFrame(窗口)、JButton(按钮)、JTextArea(文本区域)和JMenuBar(菜单栏)等组件。 2. **事件处理**:在...
在提供的"JSB.java"源代码文件中,我们可以看到Java记事本的核心逻辑和实现细节。源代码通常会包含类定义、事件处理方法、UI组件的布局和交互处理等内容。通过阅读和理解这部分代码,开发者可以学习到如何使用Java的...