`

Java核心代码(六) 桌面程序--记事本

 
阅读更多

参考文档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记事本 源代码"项目涵盖了以下核心Java技术: 1. Java基础:变量、控制结构、类和对象。 2. Swing库:用于创建GUI界面,如JFrame、JButton、JTextArea等组件的使用。 3. 文件I/O:使用java.io包...

    JAVA记事本 JAVA记事本 JAVA记事本

    在Java编程领域,创建一个简单的记事本程序是一个常见的学习项目,它可以帮助初学者理解GUI(图形用户界面)编程、事件处理和文件操作等核心概念。下面我们将深入探讨如何使用Java来实现这样一个记事本程序。 首先...

    Java简单记事本(有注释)

    Java Swing 是Java GUI(图形用户界面)库的一部分,它提供了丰富的组件和工具,用于构建桌面应用程序,包括我们这里讨论的“简单记事本”。在Java中实现记事本功能,通常会涉及到以下几个核心知识点: 1. **Swing...

    Java简单记事本程序

    在Java编程领域,开发一个简单的记事本程序是一项常见的练习,它可以帮助初学者理解GUI(图形用户界面)设计、事件处理以及文本操作等基础知识。在这个名为"Java简单记事本程序"的项目中,我们将探讨如何利用Java ...

    java记事本源代码

    【标题】:“java记事本源代码”是一个关于Java编程的项目,主要目的是实现一个基本的文本编辑器,也就是我们日常所说的记事本程序。这个项目可能是某位开发者或者学生为了学习Java编程或者完成课程作业而创建的。...

    Java实现的记事本程序

    在IT行业中,编程是一项核心技能,而Java作为广泛使用的编程语言之一,被应用于各种软件开发,包括桌面应用程序。本项目就是一个使用Java实现的记事本程序,它充分展示了Java在GUI(图形用户界面)设计和文件操作上...

    java写的日历记事本程序

    综上所述,这个“java写的日历记事本程序”涵盖了Java GUI编程、事件处理、日期时间操作、文件I/O、数据结构与算法等多个核心Java编程和技术。开发者通过这些技术实现了日历展示、记事添加、修改和删除等功能,为...

    JAVA课程设计——记事本程序

    这个记事本程序用Java编程语言编写,展现了Java在创建桌面应用程序方面的强大能力。以下是对该程序各个关键知识点的详细阐述: 1. **Java基础**:Java是一种跨平台的面向对象的编程语言,具有“一次编写,到处运行...

    java编程-记事本-全部功能都实现.doc

    【标题】与【描述】中的"java编程-记事本-全部功能都实现.doc"表明这是一个关于使用Java编程实现一个记事本程序的文档。这个程序可能包含了创建、打开、保存、打印等基本文本编辑器的功能。 【标签】中提到的"java ...

    java 编写的记事本 源代码

    总的来说,这个Java编写的记事本源代码是一个很好的学习资源,涵盖了GUI编程、文件操作、事件处理等多个Java核心概念。对于想要深入学习Java桌面应用开发的人来说,它提供了实践和理解这些概念的实例。

    java记事本程序论文.pdf

    首先,在论文的摘要部分,作者强调了程序的基本功能,包括新建、打开、保存文件,以及文本的复制、粘贴、剪切等操作,这些都是一个记事本程序的核心功能。通过使用Java Swing库,作者不仅能够实现这些基本的文本编辑...

    记事本java源代码

    在Java编程语言中,开发...通过学习和分析这个记事本程序的源代码,初学者不仅可以了解Java GUI编程的基本概念,还能掌握文件操作、事件处理和异常处理等核心技能,这对于进一步学习更复杂的Java应用开发是非常有益的。

    用java编写记事本程序

    这个程序,如标题所述,可以作为一个实用工具,允许用户创建、编辑和保存文本文件,类似于我们日常使用的桌面记事本应用程序。 首先,我们需要理解Java的基础知识,包括类、对象、方法、变量等概念。在Java中,...

    广东工业大学JAVA第三次作业-山寨记事本(代码+报告)

    【标题】"广东工业大学JAVA第三次作业-山寨记事本(代码+报告)"涉及的知识点主要集中在Java编程语言的应用上,特别是针对简单的桌面应用程序开发。这个作业要求学生模仿常见的记事本程序,实现一个功能类似的基本...

    基于Java的记事本(含代码和报告)

    描述中的"基于Java的记事本(含代码和报告)"与标题一致,进一步强调了项目的核心内容——一个用Java编写的记事本程序,同时提供了源代码和相关的技术文档。这通常意味着用户可以查看、学习甚至修改代码,了解如何...

    Java简单的记事本程序(完整代码含实验报告)

    这个程序的核心是利用Java的Swing库来创建交互式的用户界面,同时结合文件输入输出流(File I/O streams)处理文本数据的读取和写入,以实现编辑、保存、另存为、查找和替换等基本操作。下面将详细探讨这些知识点。 ...

    Java简单记事本源码

    Swing是Java Foundation Classes (JFC)的一部分,提供了丰富的组件来创建桌面应用程序的GUI。它包括诸如JFrame(窗口)、JButton(按钮)、JTextArea(文本区域)和JMenuBar(菜单栏)等组件。 2. **事件处理**:在...

    java记事本(实现全功能)

    在提供的"JSB.java"源代码文件中,我们可以看到Java记事本的核心逻辑和实现细节。源代码通常会包含类定义、事件处理方法、UI组件的布局和交互处理等内容。通过阅读和理解这部分代码,开发者可以学习到如何使用Java的...

Global site tag (gtag.js) - Google Analytics