@Override public void actionPerformed(ActionEvent e) { String comm = e.getActionCommand(); if("新建".equals(comm)){ jta.setText(""); }else if("打开".equals(comm)){ //FileDialog 类显示一个对话框窗口,用户可以从中选择文件 //由于它是一个模式对话框,当应用程序调用其 show 方法来显示对话框时, //它将阻塞其余应用程序,直到用户选择一个文件 FileDialog fd = new FileDialog(jf,"请选择要打开的文件",FileDialog.LOAD); fd.setVisible(true); //fd.show();
}else if("保存".equals(comm)){
}else if("另存".equals(comm)){
}else if("退出".equals(comm)){
}else if("撤销".equals(comm)){
}else if("剪切".equals(comm)){
}else if("复制".equals(comm)){
}else if("粘贴".equals(comm)){
}else if("删除".equals(comm)){
}else if("查找".equals(comm)){
}else if("替换".equals(comm)){
}else if("全选".equals(comm)){
}else{//关于记事本
} } public static void main(String[] args) { new Notepad(); } }
JTextArea jt = new JTextArea(12, 1000000000); public void actionPerformed(ActionEvent e) { String comm = e.getActionCommand(); if(comm.equals("复制")){ jt.copy(); } }仔细阅读API有些方法很简单的
剪切,粘贴同理
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea; /** 包括菜单:
文件:新建/打开/保存/另存/退出
编辑:撤销/剪切/复制/粘贴/删除/查找/替换/全选
帮助:关于记事本
*/
public class Notepad implements ActionListener{
JFrame jf = new JFrame("记事本");
JTextArea jta = new JTextArea(10,20);//记事本,显示纯文本的多行区域
public Notepad(){
String[] menuLabel ={"文件", "编辑","帮助"};
String[][] miLabel ={{"新建", "" , "打开", "保存", "另存","" , "退出"},
{"撤销", "剪切", "复制", "粘贴", " 删除", "","查找", "替换", "" ,"全选"},
{" 关于记事本"} };
JMenuBar jmb = new JMenuBar();
for(int i=0;i<menuLabel.length;i++){
JMenu jm = new JMenu(menuLabel[i]);
jmb.add(jm);
for(int j=0;j<miLabel[i].length;j++){
if("".equals(miLabel[i][j])){
jm.addSeparator();
}else{
JMenuItem jmi = new JMenuItem(miLabel[i][j]);
jm.add(jmi);
jmi.addActionListener(this);
}
}
}
jf.setJMenuBar(jmb);
jf.add(new JScrollPane(jta));
jf.setLocation(300,300);
jf.setSize(400,400);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e) {
String comm = e.getActionCommand();
if("新建".equals(comm)){
jta.setText("");
}else if("打开".equals(comm)){
//FileDialog 类显示一个对话框窗口,用户可以从中选择文件
//由于它是一个模式对话框,当应用程序调用其 show 方法来显示对话框时,
//它将阻塞其余应用程序,直到用户选择一个文件
FileDialog fd = new FileDialog(jf,"请选择要打开的文件",FileDialog.LOAD);
fd.setVisible(true);
//fd.show();
}else if("保存".equals(comm)){
}else if("另存".equals(comm)){
}else if("退出".equals(comm)){
}else if("撤销".equals(comm)){
}else if("剪切".equals(comm)){
}else if("复制".equals(comm)){
}else if("粘贴".equals(comm)){
}else if("删除".equals(comm)){
}else if("查找".equals(comm)){
}else if("替换".equals(comm)){
}else if("全选".equals(comm)){
}else{//关于记事本
}
}
public static void main(String[] args) {
new Notepad();
}
}
public void actionPerformed(ActionEvent e) {
String comm = e.getActionCommand();
if(comm.equals("复制")){
jt.copy();
}
}仔细阅读API有些方法很简单的
http://blog.csdn.net/casularm/archive/2009/04/17/4087738.aspx这里的都可以实现。
import java.awt.*;
import java.io.*;
import java.awt.datatransfer.*;
import java.awt.event.*;
/**
* <p>Title: 记事本</p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2009</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class EditorFrame extends Frame implements ActionListener
{
TextArea textArea=new TextArea();//用来编辑的文本区
MenuBar menuBar=new MenuBar();//菜单栏 Menu fileMenu=new Menu("文件");//文件菜单 /*文件下拉菜单中的新建、打开、保存、另存为和退出等选项*/ MenuItem newItem=new MenuItem("新建");
MenuItem openItem=new MenuItem("打开");
MenuItem saveItem=new MenuItem("保存");
MenuItem saveAsItem=new MenuItem("另存为");
MenuItem exitItem=new MenuItem("退出"); /*编辑菜单和她的子菜单全选、复制、剪切、粘贴等选项*/ Menu editMenu=new Menu("编辑");//编辑菜单 MenuItem selectItem=new MenuItem("全选");
MenuItem copyItem=new MenuItem("复制");
MenuItem cutItem=new MenuItem("剪切");
MenuItem pasteItem=new MenuItem("粘贴"); /*格式菜单和它的子菜单自动换行、字体、颜色设置*/ Menu formatMenu=new Menu("格式");//格式菜单 MenuItem newlineItem=new MenuItem("自动换行");
MenuItem fontItem=new MenuItem("字体");
MenuItem colorItem=new MenuItem("颜色设置"); /*查看菜单和它的子菜单状态栏*/ Menu seeMenu=new Menu("查看");//查看菜单 MenuItem statusItem=new MenuItem("状态栏"); /*帮助菜单和它的子菜单帮助、关于记事本*/ Menu helpMenu=new Menu("帮助");//帮助菜单 MenuItem helpItem=new MenuItem("帮助");
MenuItem aboutItem=new MenuItem("关于记事本");
String fileName="NoName";//设置默认的文件名
Toolkit toolkit=Toolkit.getDefaultToolkit();//获取默认工具包。 Clipboard clipBoard = toolkit.getSystemClipboard(); //获取系统剪切板
//public class Clipboardextends Object 此类实现一种使用剪切/复制/粘贴操作传输数据的机制。
//获取系统 Clipboard 的一个实例,该 Clipboard 与本机平台提供的剪贴板工具相互作用。该剪贴板使数据能够在
//Java 应用程序和使用本机剪贴板工具的本机应用程序之间传输。 /*打开文件对话框和保存文件对话框*/ FileDialog openFileDialog = new FileDialog(this, "Open File",
FileDialog.LOAD);
FileDialog saveAsFileDialog = new FileDialog(this, "Save File As",
FileDialog.SAVE); public EditorFrame() {
setTitle("自编笔记本");
setFont(new Font("Times New Roman", Font.PLAIN, 13));
setBackground(Color.white);
setSize(888, 666); /*在窗口中添加菜单栏*/ fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.addSeparator(); //分割线
fileMenu.add(saveItem);
fileMenu.add(saveAsItem);
fileMenu.addSeparator();
fileMenu.add(exitItem); editMenu.add(selectItem);
fileMenu.addSeparator();
editMenu.add(copyItem);
editMenu.add(cutItem);
editMenu.add(pasteItem); formatMenu.add(newlineItem);
formatMenu.add(fontItem);
formatMenu.add(colorItem); seeMenu.add(statusItem); helpMenu.add(helpItem);
helpMenu.add(aboutItem); menuBar.add(fileMenu);
menuBar.add(editMenu);
menuBar.add(formatMenu);
menuBar.add(seeMenu);
menuBar.add(helpMenu);
setMenuBar(menuBar);
add(textArea); addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}); //关闭窗口事件 /*注册各个菜单项的事件监听器*/ 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); }
public void actionPerformed(ActionEvent e)
{
Object eventSource = e.getSource(); //利用事件源判断被单击的菜单项&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (eventSource == newItem) {
textArea.setText(" ");
} else if (eventSource == openItem) {
openFileDialog.setVisible(true);
fileName = openFileDialog.getDirectory() + openFileDialog.getFile();
//getDirectory()获取所选文件的路径,getFile()获取所选文件的文件名
if (fileName != null)
readFile(fileName);
} else if (eventSource == saveItem) {
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) {
textArea.selectAll(); //全选
} else if (eventSource == copyItem) {
String text = textArea.getSelectedText(); //复制
StringSelection selection = new StringSelection(text); //StringSelection(String data)
//创建能传输指定 String 的 Transferable。
clipBoard.setContents(selection, null);
/*
* setContents(Transferable contents, ClipboardOwner owner)
将剪贴板的当前内容设置到指定的 transferable 对象,并将指定的剪贴板所有者作为新内容的所有者注册。
*/
} else if (eventSource == cutItem) { //剪切
String text = textArea.getSelectedText();
StringSelection selection = new StringSelection(text);
clipBoard.setContents(selection, null); /*剪切是用空串代替被选择的字符*/
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& textArea.replaceRange("", textArea.getSelectionStart(),
textArea.getSelectionEnd());
//replaceRange(String s,int start,int end)用String指定的内容替换Start和end范围内的内容 } else if (eventSource == pasteItem) { //粘贴
Transferable contents = clipBoard.getContents(this);
if (contents == null)
return;
String text = "";
//text="";
try {
text = (String) contents.getTransferData(DataFlavor.
stringFlavor);
//getTransferData(DataFlavor flavor) 返回一个对象,该对象表示将要被传输的数据。
} catch (Exception exception) {}
textArea.replaceRange(text, textArea.getSelectionStart(),
textArea.getSelectionEnd());
} else if (eventSource == exitItem) {
System.exit(0);
}
}
public void readFile(String fileName)
{
try {
File file = new File(fileName);
FileReader readIn = new FileReader(file); //FileReader(File file)
//在给定从中读取数据的 File 的情况下创建一个新 FileReader。
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();
textArea.setText(new String(content, 0, charsRead));
} catch (IOException e) {
System.out.println("Error openint file");
}
}
public void writeFile(String fileName)
{
try {
File file = new File(fileName);
FileWriter writeOut = new FileWriter(file);
writeOut.write(textArea.getText());
writeOut.close();
} catch (IOException e) {
System.out.println("Error openint file");
}
}
public static void main(String[] args)
{
Frame frame=new EditorFrame();
frame.setVisible(true);
}}