西安24小时汽车救援:求人写一个JAVA程序

来源:百度文库 编辑:中科新闻网 时间:2024/05/01 16:53:16
设计一个文本编辑器。它上面是菜单条,菜单条下面是一个多行文本框。菜单条包含二个菜单,File、Util, 其中,File菜单又包括菜单项open, save。当选择open时,会弹出文件对话框,让用户选择指定的文件(文本文件),然后将文件的内容显示在多行文本框中。当选择save 时,弹出文件对话框,在其中输入文件名后将多行文本框的内容存入该文件。Util菜单又包括count和reverse。当选择count时,能统计文本框中的字符数,并弹出一个对话框显示统计结果。当选择reverse时,能将文本框中的每一行文字颠倒,比如第一行是12345,就会变成54321,一行一行的变
这有什么一头雾水的,说得很清楚了啊

做的不好,请楼主和各位多提意见!!

工具: eclipse

文件名: Editor.java

代码:

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.StringTokenizer;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.Timer;

public class Editor extends JFrame {

private JPanel jContentPane = null;
private JMenuBar jMenuBar = null;
private JMenu jMenu = null;
private JMenuItem jMenuItem = null;
private JMenuItem jMenuItem1 = null;
private JMenu jMenu1 = null;
private JMenuItem jMenuItem2 = null;
private JMenuItem jMenuItem3 = null;
private JTextArea jTextArea = null;
private JScrollPane jScrollPane = null;
private File openFile=null;
/**
* This is the default constructor
*/
public Editor() {
super();
initialize();
}

/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(300, 200);
this.setJMenuBar(getJMenuBar());
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
}

/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getJScrollPane(), java.awt.BorderLayout.CENTER);
}
return jContentPane;
}

/**
* This method initializes jJMenuBar
*
* @return javax.swing.JMenuBar
*/
public JMenuBar getJMenuBar() {
if (jMenuBar == null) {
jMenuBar = new JMenuBar();
jMenuBar.add(getJMenu());
jMenuBar.add(getJMenu1());
}
return jMenuBar;
}

/**
* This method initializes jMenu
*
* @return javax.swing.JMenu
*/
private JMenu getJMenu() {
if (jMenu == null) {
jMenu = new JMenu();
jMenu.setText("file");
jMenu.setBounds(new java.awt.Rectangle(0,0,35,35));
jMenu.add(getJMenuItem());
jMenu.add(getJMenuItem1());
}
return jMenu;
}

/**
* This method initializes jMenuItem
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getJMenuItem() {
if (jMenuItem == null) {
jMenuItem = new JMenuItem();
jMenuItem.setText("open");
jMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
openFile=new File(JOptionPane.showInputDialog(null,"请输入有效的文件路径","文件选择",JOptionPane.INFORMATION_MESSAGE));
FileInputStream fileIS = null;
BufferedInputStream filePS=null;
byte[] fileCode;
if(openFile.isFile()){
try {
fileIS=new FileInputStream(openFile);
filePS=new BufferedInputStream(fileIS);
fileCode = new byte[fileIS.available()];
filePS.read(fileCode);
jTextArea.setText(new String(fileCode));
filePS.close();
fileIS.close();
jMenuItem1.setEnabled(true);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
} else{
JOptionPane.showMessageDialog(null,"打开文件路径错误","错误",JOptionPane.ERROR_MESSAGE);
}

}
});
}
return jMenuItem;
}

/**
* This method initializes jMenuItem1
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getJMenuItem1() {
if (jMenuItem1 == null) {
jMenuItem1 = new JMenuItem();
jMenuItem1.setText("save");
jMenuItem1.setEnabled(false);
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
PrintStream filePS = null;
File saveFile=null;
String fileName = JOptionPane.showInputDialog("输入保存文件的路径(默认为原路径)");
if(fileName.equals("") || fileName==null)saveFile = openFile;
else saveFile = new File(fileName);
if(saveFile.isFile()){
try {
filePS=new PrintStream(new FileOutputStream(openFile));
filePS.print(jTextArea.getText());
filePS.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} finally{
filePS.close();
}
} else {
JOptionPane.showMessageDialog(null,"保存文件路径错误","错误",JOptionPane.ERROR_MESSAGE);
}
}
});
}
return jMenuItem1;
}

/**
* This method initializes jMenu1
*
* @return javax.swing.JMenu
*/
private JMenu getJMenu1() {
if (jMenu1 == null) {
jMenu1 = new JMenu();
jMenu1.setText("util");
jMenu1.add(getJMenuItem2());
jMenu1.add(getJMenuItem3());
}
return jMenu1;
}

/**
* This method initializes jMenuItem2
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getJMenuItem2() {
if (jMenuItem2 == null) {
jMenuItem2 = new JMenuItem();
jMenuItem2.setText("count");
jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
JOptionPane.showMessageDialog(null,"当前文件的字符数:"+jTextArea.getText().length());
}
});
}
return jMenuItem2;
}

/**
* This method initializes jMenuItem3
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getJMenuItem3() {
if (jMenuItem3 == null) {
jMenuItem3 = new JMenuItem();
jMenuItem3.setText("reverse");
jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
final StringTokenizer textTokenizer = new StringTokenizer(jTextArea.getText(),"\n");
final StringBuffer textBuffer = new StringBuffer(jTextArea.getText());

Timer replaceTimer = new Timer(100, new ActionListener() {
StringBuffer replaceBuffer = null;
int start = 0;
int end = 0;
public void actionPerformed(ActionEvent e) {
if(textTokenizer.hasMoreTokens()){
replaceBuffer = new StringBuffer(textTokenizer.nextToken());
end = textBuffer.indexOf("\n",end+1);
if(end<0) end = textBuffer.length();
start = end - replaceBuffer.length();
textBuffer.replace(start,end,replaceBuffer.reverse().toString());
jTextArea.setText(textBuffer.toString());
}
}
});
replaceTimer.start();
}
});
}
return jMenuItem3;
}

/**
* This method initializes jTextArea
*
* @return javax.swing.JTextArea
*/
private JTextArea getJTextArea() {
if (jTextArea == null) {
jTextArea = new JTextArea();
}
return jTextArea;
}

/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setViewportView(getJTextArea());
}
return jScrollPane;
}
public static void main(String args[]){
Editor editor = new Editor();
editor.setVisible(true);
}
}

说实话自己觉得做的并不好,不过事件都有了!

 
 
 
可以这样写:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

class TextEditor extends JFrame {
    private static final String PROGRAM_NAME = "TextEditor";
    private JTextArea    doc = new JTextArea( 20, 50 );
    private JFileChooser fc  = new JFileChooser( );

    public TextEditor( ) {
        setTitle( PROGRAM_NAME );
        setJMenuBar( produceMenuBar( ) );
        getContentPane( ).add( new JScrollPane( doc ) );
        pack( );
        setLocation( 200, 100 );
        setDefaultCloseOperation( EXIT_ON_CLOSE );
        setVisible( true );
    }

    public static void main( String[ ] args ) { new TextEditor( ); }

    // Constructs, populates, and returns the menu bar.
    private JMenuBar produceMenuBar( ) {
        // Create an action for each of the four menu items.
        Action
        actionFileOpen = new AbstractAction( "Open" ) {
            public void actionPerformed( ActionEvent ae ) {
                if( fc.showOpenDialog( TextEditor.this ) == fc.APPROVE_OPTION ) {
                    try {
                        doc.read( new FileReader( fc.getSelectedFile( ) ), null );
                        setTitle( PROGRAM_NAME + "  -  " + fc.getSelectedFile( ) );
                    } catch( IOException ioe ) {
                        JOptionPane.showMessageDialog(
                            TextEditor.this,       ioe.getMessage( ) + ".",
                            "Failed To Open File", JOptionPane.ERROR_MESSAGE
                        );
                    }
                }
            }
        },
        actionFileSave = new AbstractAction( "Save" ) {
            public void actionPerformed( ActionEvent ae ) {
                if( fc.showSaveDialog( TextEditor.this ) == fc.APPROVE_OPTION ) {
                    try {
                        doc.write( new FileWriter( fc.getSelectedFile( ) ) );
                        setTitle( PROGRAM_NAME + "  -  " + fc.getSelectedFile( ) );
                    } catch( IOException ioe ) {
                        JOptionPane.showMessageDialog(
                            TextEditor.this,            ioe.getMessage( ) + ".",
                            "Failed To Save Into File", JOptionPane.ERROR_MESSAGE
                        );
                    }
                }
            }
        },
        actionUtilCount = new AbstractAction( "Count" ) {
            public void actionPerformed( ActionEvent ae ) {
                JOptionPane.showMessageDialog(
                    TextEditor.this, "Character Count: " + doc.getText( ).length( )
                );
            }
        },
        actionUtilReverse = new AbstractAction( "Reverse" ) {
            public void actionPerformed( ActionEvent ae ) {
                String[ ] lines = doc.getText( ).split( "\n" );
                doc.setText( "" );
                for( int i = 0; i < lines.length; ++i )
                    doc.append( new StringBuffer( lines[ i ] ).reverse( ) + "\n" );
            }
        };

        // MenuBar holds Menus that hold MenuItems initialized with Actions.
        JMenuBar mb = new JMenuBar( );
        JMenu mFile = mb.add( new JMenu( "File" ) ),
              mUtil = mb.add( new JMenu( "Util" ) );
        mFile.add( new JMenuItem( actionFileOpen    ) );
        mFile.add( new JMenuItem( actionFileSave    ) );
        mUtil.add( new JMenuItem( actionUtilCount   ) );
        mUtil.add( new JMenuItem( actionUtilReverse ) );

        return mb;
    }
}
 
 
 

我自己以前写过一个,
关于统计字数和翻转文字的功能你自己加把
在JAVA文件夹下!

http://briefcase.tom.com/briefcase/monicc/

有没有期限? 虽然很简单,但我怕我写好了 人家比我更快我就白忙活了-_-

你如果确定要我的就留言给我,我就做给你。我白天要上班,只能晚上做一做。 从我看到留言,2天给你。

ps:如果还有什么要求也要告诉我。例如要不要详细的注释,或者详细的设计文档。 不过这些都是耗时间的活~~

本人倒是想帮你,可是自己的本事也不是很高,而且这个好麻烦的

本人倒是想帮你,但是你说的我一头雾水,在下实在无能为力啊