在JDK下DEMO下有记事本的试例文件,建议你去看一下!
解决方案 »
- 求一正则表达式,能正确的找出下面的文字所在方位
- java中的arraycopy对一维数组和二维数组的拷贝后,分别对拷贝后的数组内容进行修改,为什么一维的修改对原数组没反应,而二维的修改对原数组也做的修改啊?
- 一个关于javamail 的程序可以编译但运行出错,怎么办?
- java中怎么将域名解析为ip
- 微软_编程精粹下载!!!晚了没了------------------
- 关于线程同步的问题!
- java IO流读取多个文件问题
- 请问,j2se的中文手册到哪里有下的?
- 怎样得到Rsultset中的记录总数???
- 一个看不懂的例程~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~希望有大虾能帮助我啊
- 一个简单地图系统,请高手帮忙设计、能提供代码更好
- 如何在java中表示c中的goto语句
import java.awt.*;
import java.io.*;
import java.awt.event.*;
import java.awt.datatransfer.*;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 helpmenu = new Menu("帮助");
MenuItem aboutItem = new MenuItem("关于记事本");
String fileName = "NoName";
Toolkit toolKit = Toolkit.getDefaultToolkit();
Clipboard clipBoard = toolKit.getSystemClipboard();
private FileDialog openFileDialog
= new FileDialog(this,"Open File",FileDialog.LOAD);
private FileDialog saveasFileDialog
= new FileDialog(this,"Save File As",FileDialog.SAVE);
public EditorFrame()
{
setTitle("记事本");
setFont(new Font("Times New Roman",Font.PLAIN,12));
setBackground(Color.white);
setSize(300,200);
filemenu.add(newItem);
filemenu.add(openItem);
filemenu.addSeparator();
filemenu.add(saveItem);
filemenu.add(saveasItem);
filemenu.addSeparator();
filemenu.add(exitItem);
editmenu.add(selectItem);
editmenu.addSeparator();
editmenu.add(copyItem);
editmenu.add(cutItem);
editmenu.add(pasteItem);
helpmenu.add(aboutItem);
menubar.add(filemenu);
menubar.add(editmenu);
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();
if(fileName != null)
{
readFile(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);
clipBoard.setContents(selection,null);
}
else if(eventSource == cutItem)
{
String text = textArea.getSelectedText();
StringSelection selection = new StringSelection(text);
clipBoard.setContents(selection,null);
textArea.replaceRange("",textArea.getSelectionStart(),textArea.getSelectionEnd());
}
else if(eventSource == pasteItem)
{
Transferable contents = clipBoard.getContents(this);
if(contents == null)
{
return;
}
String text;
text = "";
try
{
text = (String)contents.getTransferData(DataFlavor.stringFlavor);
}
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);
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 Opening 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 writing file");
}
}
public static void main(String[] args)
{
Frame frame = new EditorFrame();
frame.setVisible(true);
}
}
比如: 前面定义JMenu是用的"Open...",后面比较id时为什么成了"open..."?下面的代码只改了大小写,通过了。不过还是要尽量使用常量。
比如:final String OPEN_MENU = "Open..."; 以后凡是用到这个串的地方都用OPEN_MENU来代替
import java.awt.*;
import java.awt.event.*;import java.io.*;import javax.swing.*;
class newtest extends JFrame implements ActionListener {
File file = null;
Color color = Color.black;
JTextPane text = new JTextPane();
JFileChooser filechooser = new JFileChooser();
JColorChooser jcolorchooser = new JColorChooser();
JDialog about = new JDialog(this);
JMenuBar menubar = new JMenuBar();
JMenu[] menus = new JMenu[] { new JMenu("File"), new JMenu("Edit"), new JMenu("Help"), };
JMenuItem[][] menuitems = new JMenuItem[][] {
{
new JMenuItem("New"), new JMenuItem("Open..."), new JMenuItem("Save..."),
new JMenuItem("Exit")
},
{
new JMenuItem("Copy"), new JMenuItem("Cut"), new JMenuItem("Paste"),
new JMenuItem("Color...")
},
{ new JMenuItem("About") }
}; newtest() {
inittextpane();
initmenu();
initaboutdialog();
} void inittextpane() {
getContentPane().add(new JScrollPane(text));
} void initmenu() {
for (int i = 0; i < menus.length; i++) {
menubar.add(menus[i]); for (int j = 0; j < menuitems[i].length; j++) {
menus[i].add(menuitems[i][j]);
menuitems[i][j].addActionListener(this);
}
} this.setJMenuBar(menubar);
} public void actionPerformed(ActionEvent e) {
JMenuItem mi = (JMenuItem) e.getSource();
String id = mi.getText(); if (id.equals("New")) {
text.setText("");
file = null;
} else if (id.equals("Open...")) {
if (file != null) {
filechooser.setSelectedFile(file);
} int returnVal = filechooser.showOpenDialog(newtest.this); if (returnVal == JFileChooser.APPROVE_OPTION) {
file = filechooser.getSelectedFile();
openFile();
}
} else if (id.equals("Save...")) {
if (file != null) {
filechooser.setSelectedFile(file);
} int returnVal = filechooser.showSaveDialog(newtest.this); if (returnVal == JFileChooser.APPROVE_OPTION) {
file = filechooser.getSelectedFile();
saveFile();
}
} else if (id.equals("Exit")) {
System.exit(0);
} else if (id.equals("Cut")) {
text.cut();
} else if (id.equals("Copy")) {
text.copy();
} else if (id.equals("Paste")) {
text.paste();
} else if (id.equals("Color...")) {
color = JColorChooser.showDialog(this, "", color);
text.setForeground(color);
} else if (id.equals("About")) {
about.setSize(100, 50);
about.show();
}
} void saveFile() {
try {
FileWriter fw = new FileWriter(file);
fw.write(text.getText());
fw.close();
} catch (Exception e) {
e.printStackTrace();
}
} void openFile() {
try {
FileReader fr = new FileReader(file);
int len = (int) file.length();
char[] buffer = new char[len];
fr.read(buffer, 0, len);
fr.close();
text.setText(new String(buffer));
} catch (Exception e) {
e.printStackTrace();
}
} void initaboutdialog() {
JLabel jb = new JLabel("a sample test");
about.getContentPane().add(jb);
about.setModal(true);
about.setSize(100, 50);
}
}
public class testeditapp {
public static void main(String[] args) {
newtest f = new newtest();
f.setTitle("a test app");
f.setSize(590, 400);
f.show();
}
}