想做一个记事本,实现一个打开功能。我想先做图形界面,再添加事件,现在打开的方法不会。谁帮个忙做一下?import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.util.*;
import java.io.*;
public class jishiben extends Frame
{
public jishiben()
{
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
} private void jbInit() throws Exception
{
jTextArea1.setText("jTextArea1");
this.setMenuBar(menuBar1);
this.setSize(500, 500);
this.setTitle("记事本");
this.setVisible(true);
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
); menu1.setLabel("文件");
menu1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
menu1_actionPerformed(e);
}
}
);
menuItem1.setLabel("打开");
menuBar1.add(menu1);
menu1.add(menuItem1);
}
JTextArea jTextArea1 = new JTextArea();
MenuBar menuBar1 = new MenuBar();
Menu menu1 = new Menu("文件");
MenuItem menuItem1 = new MenuItem("打开");
JFileChooser jFileChooser1=new JFileChooser();
public static void main(String s[]) throws Exception
{
new jishiben();
}public void menu1_actionPerformed(ActionEvent e)
{
}
}
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.util.*;
import java.io.*;
public class jishiben extends Frame
{
public jishiben()
{
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
} private void jbInit() throws Exception
{
jTextArea1.setText("jTextArea1");
this.setMenuBar(menuBar1);
this.setSize(500, 500);
this.setTitle("记事本");
this.setVisible(true);
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
); menu1.setLabel("文件");
menu1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
menu1_actionPerformed(e);
}
}
);
menuItem1.setLabel("打开");
menuBar1.add(menu1);
menu1.add(menuItem1);
}
JTextArea jTextArea1 = new JTextArea();
MenuBar menuBar1 = new MenuBar();
Menu menu1 = new Menu("文件");
MenuItem menuItem1 = new MenuItem("打开");
JFileChooser jFileChooser1=new JFileChooser();
public static void main(String s[]) throws Exception
{
new jishiben();
}public void menu1_actionPerformed(ActionEvent e)
{
}
}
解决方案 »
- 垃圾回收机制
- 关于java输出中文到文件时总是变成?号的求助
- JApplet放置了GlassPane,当repaint GlassPane时,系统会把Applet的组件也repaint,有什么法办可以repaint GlassPane其它组件不受影响????
- java 问题
- 高分求救image小问题!!!!!
- 同样的代码,为何结果不同?
- 请教大家一个关于鼠标事件的问题!!
- 在socket中传送对象流遇到的问题,请大家给点帮助
- 请教几个问题
- JDBC中Statement s = c.createStatement() 一句的疑问?
- 高分求swt窗口之间的数据传递的例子代码!~
- ==用过Maven和Archiva的看过来==
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.text.*;
import javax.swing.event.*;
import javax.swing.undo.*;
import java.util.*;/**
*<p>Title: 程序编辑器</p>
*<p>Description: 增强的文本编辑程序</p>
*<p>Copyright: Copyright (c) 2005</p>
*<p>Company: </p>
*@author 红色彼岸
*@version 0.1
*/
class ProEFrame extends JFrame{
private JFileChooser fileChooser = new JFileChooser(); private JMenuBar menuBar;
private JMenu file, edit, format, help;
private JMenuItem newItem, openItem, saveItem, saveAsItem, pageSetItem, printItem, exitItem;
private JMenuItem undoItem, redoItem, cutItem, copyItem, pasteItem, deleteItem, findItem, findNextItem, replaceItem, goToLineItem, selectAllItem, timeItem;
private JMenuItem autoNextLineItem, fontItem;
private JMenuItem helpItem, aboutItem;
private JTextArea textArea;
private JScrollPane scrollPane;
private final int TAB_SIZE = 4; private File fileName;
private boolean isChange = false; private final UndoManager undo = new UndoManager(); public ProEFrame(String title) {
//设置窗体的标题栏和默认关闭操作
super(title);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); //设置菜单栏和菜单的内容
menuBar = new JMenuBar();
file = new JMenu("文件(F)");
edit = new JMenu("编辑(E)");
format = new JMenu("格式(O)");
help = new JMenu("帮助(H)");
setQuickKey(file, 'F');
setQuickKey(edit, 'E');
setQuickKey(format, 'O');
setQuickKey(help, 'H');
newItem = new JMenuItem("新建(N)");
openItem = new JMenuItem("打开(O)...");
saveItem = new JMenuItem("保存(S)");
saveAsItem = new JMenuItem("另存为...");
pageSetItem = new JMenuItem("页面设置(U)...");
printItem = new JMenuItem("打印(P)...");
exitItem = new JMenuItem("退出");
setQuickKey(newItem, 'N');
setQuickKey(openItem, 'O');
setQuickKey(saveItem, 'S');
setQuickKey(pageSetItem, 'U');
setQuickKey(printItem, 'P');
file.add(newItem);
file.add(openItem);
file.add(saveItem);
file.add(saveAsItem);
file.addSeparator();
file.add(pageSetItem);
file.add(printItem);
file.addSeparator();
file.add(exitItem); undoItem = new JMenuItem("撤销(Z)");
redoItem = new JMenuItem("恢复(R)");
cutItem = new JMenuItem("剪切(X)");
copyItem = new JMenuItem("复制(C)");
pasteItem = new JMenuItem("粘贴(V)");
deleteItem = new JMenuItem("删除");
findItem = new JMenuItem("查找(F)...");
findNextItem = new JMenuItem("查找下一个");
replaceItem = new JMenuItem("替换...");
goToLineItem = new JMenuItem("转到(G)...");
selectAllItem = new JMenuItem("全选(A)");
timeItem = new JMenuItem("时间/日期"); setQuickKey(undoItem, 'Z');
setQuickKey(redoItem, 'R');
setQuickKey(cutItem, 'X');
setQuickKey(copyItem, 'C');
setQuickKey(pasteItem, 'V');
setQuickKey(findItem, 'F');
setQuickKey(goToLineItem, 'G');
setQuickKey(selectAllItem, 'A');
edit.add(undoItem);
edit.add(redoItem);
edit.addSeparator();
edit.add(cutItem);
edit.add(copyItem);
edit.add(pasteItem);
edit.add(deleteItem);
edit.addSeparator();
edit.add(findItem);
edit.add(findNextItem);
edit.add(replaceItem);
edit.add(goToLineItem);
edit.addSeparator();
edit.add(selectAllItem);
edit.add(timeItem); autoNextLineItem = new JMenuItem("自动换行(W)");
fontItem = new JMenuItem("字体..."); setQuickKey(autoNextLineItem, 'W'); format.add(autoNextLineItem);
format.add(fontItem); helpItem = new JMenuItem("帮助主题(H)");
aboutItem = new JMenuItem("关于ProE"); setQuickKey(helpItem, 'H'); help.add(helpItem);
help.add(aboutItem); menuBar.add(file);
menuBar.add(edit);
menuBar.add(format);
menuBar.add(help);
setJMenuBar(menuBar); textArea = new JTextArea();
textArea.setTabSize(TAB_SIZE);
//支持撤销/恢复操作的监听方法
textArea.getDocument().addUndoableEditListener(new UndoableEditListener() {
public void undoableEditHappened(UndoableEditEvent evt) {
undo.addEdit(evt.getEdit());
}
});
//监听文档内容是否发生变化
textArea.getDocument().addDocumentListener(
new DocumentListener() {
public void changedUpdate(DocumentEvent de) {
isChange = true;
}
public void insertUpdate(DocumentEvent de) {
isChange = true;
}
public void removeUpdate(DocumentEvent de) {
isChange = true;
}
}
);
scrollPane = new JScrollPane(textArea);
this.getContentPane().add(scrollPane, BorderLayout.CENTER); //测试用的方法
MenuItemEventHandler menuItemHandler = new MenuItemEventHandler();
newItem.addActionListener(menuItemHandler);
openItem.addActionListener(menuItemHandler);
saveItem.addActionListener(menuItemHandler);
saveAsItem.addActionListener(menuItemHandler);
pageSetItem.addActionListener(menuItemHandler);
printItem.addActionListener(menuItemHandler);
exitItem.addActionListener(menuItemHandler);
undoItem.addActionListener(menuItemHandler);
redoItem.addActionListener(menuItemHandler);
cutItem.addActionListener(menuItemHandler);
copyItem.addActionListener(menuItemHandler);
pasteItem.addActionListener(menuItemHandler);
deleteItem.addActionListener(menuItemHandler);
findItem.addActionListener(menuItemHandler);
findNextItem.addActionListener(menuItemHandler);
replaceItem.addActionListener(menuItemHandler);
goToLineItem.addActionListener(menuItemHandler);
selectAllItem.addActionListener(menuItemHandler);
timeItem.addActionListener(menuItemHandler);
autoNextLineItem.addActionListener(menuItemHandler);
fontItem.addActionListener(menuItemHandler);
helpItem.addActionListener(menuItemHandler);
aboutItem.addActionListener(menuItemHandler); addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
exitPerformed();
}
});
} //辅助方法:为菜单或者菜单项设定快捷键
private void setQuickKey(AbstractButton button, char quickKey) {
String type = button.getClass().getSimpleName();
if(type.equals("JMenu"))
button.setMnemonic(quickKey);
else if(type.equals("JMenuItem")) {
JMenuItem menuItem = (JMenuItem)button;
menuItem.setAccelerator(KeyStroke.getKeyStroke(quickKey, InputEvent.CTRL_MASK));
}
} //辅助方法:测试JTextArea中文本是否有变化
private boolean hasChange() {
return isChange;
}
private void newPerformed() {
int value = -1;
if(hasChange())
if(fileName != null && fileName.exists()) {
String[] buttonTexts = {"保存", "不保存", "取消"};
value = JOptionPane.showOptionDialog(this, "源程序已经改变,请确认是否保存!", "保存更改?", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, buttonTexts, buttonTexts[0]);
if(value == JOptionPane.YES_OPTION)
savePerformed();
else if(value == JOptionPane.NO_OPTION) {
fileName = null;
textArea.setText("");
setTitle("程序编辑器");
return;
}
else if(value == JOptionPane.CANCEL_OPTION)
return;
}
else {
saveAsPerformed();
fileName = null;
textArea.setText("");
setTitle("程序编辑器");
return;
}
fileName = null;
textArea.setText("");
setTitle("程序编辑器");
isChange = false;
return;
} private void openPerformed() {
BufferedReader input = null;
String text;
int ret = fileChooser.showOpenDialog(this);
if(ret != JFileChooser.APPROVE_OPTION)
return;
newPerformed();
fileName = fileChooser.getSelectedFile();
if(fileName.exists() && fileName.canRead()) {
setTitle("程序编辑器: " + fileName.getName());
try{
input = new BufferedReader(new FileReader(fileName));
while((text = input.readLine()) != null)
textArea.append(text + "\n");
input.close();
}
catch(IOException e) {
JOptionPane.showMessageDialog(this, "文件打开错误,没有打开");
}
finally {
input = null;
}
}
isChange = false;
}
private void savePerformed() {
if(!hasChange())
return;
PrintWriter output = null;
if(fileName != null && fileName.exists()) {
try{
output = new PrintWriter(fileName);
output.write(textArea.getText());
}
catch(IOException e)
{
JOptionPane.showMessageDialog(this, "文件写入错误,没有保存");
}
finally {
output.close();
output = null;
}
isChange = false;
}
else
saveAsPerformed();
}
private void saveAsPerformed() {
if(!hasChange())
return;
PrintWriter output = null;
int ret = fileChooser.showSaveDialog(this);
if(ret != JFileChooser.APPROVE_OPTION) {
isChange = true;
return;
} fileName = fileChooser.getSelectedFile();
setTitle("程序编辑器: " + fileName.getName());
try{
output = new PrintWriter(fileName);
output.write(textArea.getText());
}
catch(IOException e){
JOptionPane.showMessageDialog(this, "文件写入错误,没有保存");
}
finally{
output.close();
output = null;
}
isChange = false;
}
private void pageSetPerformed() {
System.out.println("显示页面设置对话框");
}
private void printPerformed() {
System.out.println("显示打印对话框");
}
private void exitPerformed() {
String[] buttonTexts = {"保存退出", "不保存退出", "取消"};
int value = -1;
if(hasChange()) {
value = JOptionPane.showOptionDialog(this, "源程序已经改变,请是否选择保存或直接退出!", "退出程序", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, buttonTexts, buttonTexts[0]);
switch(value)
{
case JOptionPane.YES_OPTION:
savePerformed();
break;
case JOptionPane.NO_OPTION:
System.exit(0);
break;
case JOptionPane.CANCEL_OPTION:
isChange = true;
return;
}
}
else
System.exit(0);
}
private void undoPerformed() {
try{
if(undo.canUndo())
undo.undo();
}catch(CannotUndoException e) {
JOptionPane.showMessageDialog(this, "无法执行撤销操作", "撤销异常", JOptionPane.WARNING_MESSAGE);
}
}
private void redoPerformed() {
try{
if(undo.canRedo())
undo.redo();
}catch(CannotRedoException e) {
JOptionPane.showMessageDialog(this, "无法执行恢复操作", "恢复异常", JOptionPane.WARNING_MESSAGE);
}
}
private void cutPerformed() {
textArea.cut();
}
private void copyPerformed() {
textArea.copy();
}
private void pastePerformed() {
textArea.paste();
}
private void deletePerformed() {
textArea.replaceRange(null, textArea.getSelectionStart(), textArea.getSelectionEnd());
}
private void findPerformed() {
String findString = JOptionPane.showInputDialog(this, );
}
private void findNextPerformed() {
System.out.println("查找下一个");
}
private void replacePerformed() {
System.out.println("替换");
}
private void goToLinePerformed() {
System.out.println("转到");
}
private void selectAllPerformed() {
textArea.selectAll();
}
private void timePerformed() {
textArea.insert((new Date()).toString(), textArea.getSelectionEnd());
}
private void autoNextLinePerformed() {
System.out.println("自动换行");
}
private void fontPerformed() {
System.out.println("字体");
}
private void helpPerformed() {
System.out.println("帮助主题");
}
private void aboutPerformed() {
System.out.println("关于程序");
} /**
*<p>Title: </p>
*<p>Description: 处理菜单出发的事件</p>
*<p>Copyright: Copyright (c) 2005</p>
*<p>Company: </p>
*@author 红色彼岸
*@version 0.1
*/
class MenuItemEventHandler implements ActionListener{
public void actionPerformed(ActionEvent e) {
JMenuItem item = (JMenuItem)e.getSource();
if(item == newItem)
newPerformed();
else if(item == openItem)
openPerformed();
else if(item == saveItem)
savePerformed();
else if(item == saveAsItem)
saveAsPerformed();
else if(item == pageSetItem)
pageSetPerformed();
else if(item == printItem)
printPerformed();
else if(item == exitItem)
exitPerformed();
else if(item == undoItem)
undoPerformed();
else if(item == redoItem)
redoPerformed();
else if(item == cutItem)
cutPerformed();
else if(item == copyItem)
copyPerformed();
else if(item == pasteItem)
pastePerformed();
else if(item == deleteItem)
deletePerformed();
else if(item == findItem)
findPerformed();
else if(item == findNextItem)
findNextPerformed();
else if(item == replaceItem)
replacePerformed();
else if(item == goToLineItem)
goToLinePerformed();
else if(item == selectAllItem)
selectAllPerformed();
else if(item == timeItem)
timePerformed();
else if(item == autoNextLineItem)
autoNextLinePerformed();
else if(item == fontItem)
fontPerformed();
else if(item == helpItem)
helpPerformed();
else if(item == aboutItem)
aboutPerformed();
}
}
}作者Blog:http://blog.csdn.net/chin1982/
希望对楼主有帮助
Notepad.java
if (e.getSource() == Open) {
fileDialog_open.setVisible(true);
File f = null;
f = new File(fileDialog_open.getDirectory()
+ fileDialog_open.getFile());
for (int i = 0; i <= f.length(); i++) {
char[] ch = new char[i];
try {
FileReader fr = new FileReader(f);
fr.read(ch);
String str = new String(ch);
txt_area.setText(str);
fr.close();
} catch (FileNotFoundException fe) { } catch (IOException ie) {
}
} }