package SwingPra;import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;import javax.swing.JDesktopPane;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;public class TextEditor extends JFrame {
JDesktopPane desktopPane; JMenuBar menubar;
JMenu fileMenu, helpMenu;
JMenuItem newItem, openItem, saveItem, othersaveItem, closeItem, exitItem; JMenuItem aboutItem;
StringBuffer buffer = new StringBuffer();
File currentFile;
int status;
DisplayFrame currentFrame; public TextEditor() {
super("文本编辑器");
Container container = getContentPane();
desktopPane = new JDesktopPane();
container.add(desktopPane);
createMenu();
setJMenuBar(menubar);
} public void createMenu() {
menubar = new JMenuBar();
fileMenu = new JMenu("文件");
newItem = new JMenuItem("新建");
newItem.addActionListener(new NewFileListener());
openItem = new JMenuItem("打开");
openItem.addActionListener(new OpenFileListener());
saveItem = new JMenuItem("保存");
saveItem.addActionListener(new SaveFileListener());
othersaveItem = new JMenuItem("另存为");
othersaveItem.addActionListener(new OtherSaveFileListener());
closeItem = new JMenuItem("关闭");
closeItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
if (e.getSource() == closeItem) {
currentFrame.dispose();
}
}
}); exitItem = new JMenuItem("退出");
exitItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.addSeparator();
fileMenu.add(saveItem);
fileMenu.add(othersaveItem);
fileMenu.addSeparator();
fileMenu.add(closeItem);
fileMenu.add(exitItem); helpMenu = new JMenu("帮助");
aboutItem = new JMenuItem("关于");
aboutItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == aboutItem) {
JOptionPane.showMessageDialog(null, "TextEditor 1.1", "版本",
JOptionPane.INFORMATION_MESSAGE);
}
}
}); helpMenu.add(aboutItem);
menubar.add(helpMenu);
menubar.add(helpMenu);
} public File ChooseFile(int chooseMode) {
JFileChooser filechooser = new JFileChooser();
filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
int result = 0;
switch (chooseMode) {
case 1:
result = filechooser.showOpenDialog(filechooser);
break;
case 2:
result = filechooser.showSaveDialog(filechooser);
break;
}
if (result == filechooser.CANCEL_OPTION)
return null;
File fileName = filechooser.getCurrentDirectory();
return fileName;
} public void saveFile(File file, int saveMode) throws IOException {
File fileName = null;
switch (saveMode) {
case 0:
fileName = ChooseFile(2);
if (fileName.createNewFile() != true)
return;
break;
case 1:
fileName = file;
break;
default:
return;
}
currentFile = fileName;
if (fileName.exists()!= true)
return;
BufferedWriter input = new BufferedWriter(fileName);
input.write(buffer.toString(), 0, buffer.length() - 1);
System.err.println(buffer.length());
if (input != null)
input.close();
status = 1;
} public void showFile(File fileName, DisplayFrame contentFrame) {
try {
BufferedReader output = new BufferedReader(fileName);
String text;
buffer = new StringBuffer();
while ((text = output.readLine()) != null) {
buffer.append(text + "\n"); }
contentFrame.displayArea.setText(buffer.toString());
contentFrame.setTitle(fileName.getName());
output.close();
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "错误发生!");
} catch (NullPointerException e) {
JOptionPane.showMessageDialog(null, "警告");
}
} public static void main(String[] args) {
TextEditor texteditor = new TextEditor();
texteditor.setSize(400, 300);
texteditor.setVisible(true);
texteditor.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} class NewFileListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
DisplayFrame txtFrame = new DisplayFrame();
currentFrame = txtFrame;
txtFrame.setTitle("新建文件");
desktopPane.add(txtFrame);
status = 0;
}
} class OpenFileListener implements ActionListener { public void actionPerformed(ActionEvent arg0) {
File fileName = ChooseFile(1);
currentFile = fileName;
try {
if (fileName.exists()) {
DisplayFrame contentFrame = new DisplayFrame();
currentFrame = contentFrame;
desktopPane.add(contentFrame);
showFile(fileName, contentFrame);
}
status = 1;
} catch (Exception e) {
}
}
} class SaveFileListener implements ActionListener { public void actionPerformed(ActionEvent e) {
if(e.getSource() == saveItem) {
try {
saveFile(currentFile, status);
}catch(IOException gg) {
JOptionPane.showMessageDialog(null, "保存文件失败!");
}catch(Exception f) {
}
}
}
}
class OtherSaveFileListener implements ActionListener { public void actionPerformed(ActionEvent e) {
if (e.getSource() == othersaveItem) {
File fileName = chooseFile(2);
BufferedWriter output = null;
BufferedReader input = null;
try {
if (fileName.exists() != true) {
fileName.createNewFile();
} input = new BufferedReader(new FileReader(currentFile));
output = new BufferedWriter(new FileWriter(fileName));
String ch;
while ((ch = input.readLine()) != null) {
output.write(ch);
output.newLine();
}
input.close();
output.close();
currentFrame.dispose();
DisplayFrame contentFrame = new DisplayFrame();
desktopPane.add(contentFrame);
currentFrame = contentFrame;
currentFile = fileName;
showFile(fileFrame, contentFrame);
} catch (IOException ee) {
JOptionPane.showMessageDialog(null, "文件另存失败!");
}
}
}
} class DisplayFrame extends JInternalFrame implements DocumentListener {
JTextArea displayArea; public DisplayFrame() {
super("文本内容", true, true, true, true);
displayArea = new JTextArea(8, 30);
displayArea.getDocument().addDocumentListener(this);
getContentPane().add(displayArea);
pack();
setVisible(true); } public void changedUpdate(DocumentEvent e) { } public void insertUpdate(DocumentEvent e) {
StringBuffer buffer = new StringBuffer(displayArea.getText());
displayArea.setCaretPosition(displayArea.getDocument().getLength());
} public void removeUpdate(DocumentEvent e) {
StringBuffer buffer = new StringBuffer(displayArea.getText());
displayArea.setCaretPosition(displayArea.getDocument().getLength());
} }}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;import javax.swing.JDesktopPane;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;public class TextEditor extends JFrame {
JDesktopPane desktopPane; JMenuBar menubar;
JMenu fileMenu, helpMenu;
JMenuItem newItem, openItem, saveItem, othersaveItem, closeItem, exitItem; JMenuItem aboutItem;
StringBuffer buffer = new StringBuffer();
File currentFile;
int status;
DisplayFrame currentFrame; public TextEditor() {
super("文本编辑器");
Container container = getContentPane();
desktopPane = new JDesktopPane();
container.add(desktopPane);
createMenu();
setJMenuBar(menubar);
} public void createMenu() {
menubar = new JMenuBar();
fileMenu = new JMenu("文件");
newItem = new JMenuItem("新建");
newItem.addActionListener(new NewFileListener());
openItem = new JMenuItem("打开");
openItem.addActionListener(new OpenFileListener());
saveItem = new JMenuItem("保存");
saveItem.addActionListener(new SaveFileListener());
othersaveItem = new JMenuItem("另存为");
othersaveItem.addActionListener(new OtherSaveFileListener());
closeItem = new JMenuItem("关闭");
closeItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
if (e.getSource() == closeItem) {
currentFrame.dispose();
}
}
}); exitItem = new JMenuItem("退出");
exitItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.addSeparator();
fileMenu.add(saveItem);
fileMenu.add(othersaveItem);
fileMenu.addSeparator();
fileMenu.add(closeItem);
fileMenu.add(exitItem); helpMenu = new JMenu("帮助");
aboutItem = new JMenuItem("关于");
aboutItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == aboutItem) {
JOptionPane.showMessageDialog(null, "TextEditor 1.1", "版本",
JOptionPane.INFORMATION_MESSAGE);
}
}
}); helpMenu.add(aboutItem);
menubar.add(helpMenu);
menubar.add(helpMenu);
} public File ChooseFile(int chooseMode) {
JFileChooser filechooser = new JFileChooser();
filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
int result = 0;
switch (chooseMode) {
case 1:
result = filechooser.showOpenDialog(filechooser);
break;
case 2:
result = filechooser.showSaveDialog(filechooser);
break;
}
if (result == filechooser.CANCEL_OPTION)
return null;
File fileName = filechooser.getCurrentDirectory();
return fileName;
} public void saveFile(File file, int saveMode) throws IOException {
File fileName = null;
switch (saveMode) {
case 0:
fileName = ChooseFile(2);
if (fileName.createNewFile() != true)
return;
break;
case 1:
fileName = file;
break;
default:
return;
}
currentFile = fileName;
if (fileName.exists()!= true)
return;
BufferedWriter input = new BufferedWriter(fileName);
input.write(buffer.toString(), 0, buffer.length() - 1);
System.err.println(buffer.length());
if (input != null)
input.close();
status = 1;
} public void showFile(File fileName, DisplayFrame contentFrame) {
try {
BufferedReader output = new BufferedReader(fileName);
String text;
buffer = new StringBuffer();
while ((text = output.readLine()) != null) {
buffer.append(text + "\n"); }
contentFrame.displayArea.setText(buffer.toString());
contentFrame.setTitle(fileName.getName());
output.close();
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "错误发生!");
} catch (NullPointerException e) {
JOptionPane.showMessageDialog(null, "警告");
}
} public static void main(String[] args) {
TextEditor texteditor = new TextEditor();
texteditor.setSize(400, 300);
texteditor.setVisible(true);
texteditor.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} class NewFileListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
DisplayFrame txtFrame = new DisplayFrame();
currentFrame = txtFrame;
txtFrame.setTitle("新建文件");
desktopPane.add(txtFrame);
status = 0;
}
} class OpenFileListener implements ActionListener { public void actionPerformed(ActionEvent arg0) {
File fileName = ChooseFile(1);
currentFile = fileName;
try {
if (fileName.exists()) {
DisplayFrame contentFrame = new DisplayFrame();
currentFrame = contentFrame;
desktopPane.add(contentFrame);
showFile(fileName, contentFrame);
}
status = 1;
} catch (Exception e) {
}
}
} class SaveFileListener implements ActionListener { public void actionPerformed(ActionEvent e) {
if(e.getSource() == saveItem) {
try {
saveFile(currentFile, status);
}catch(IOException gg) {
JOptionPane.showMessageDialog(null, "保存文件失败!");
}catch(Exception f) {
}
}
}
}
class OtherSaveFileListener implements ActionListener { public void actionPerformed(ActionEvent e) {
if (e.getSource() == othersaveItem) {
File fileName = chooseFile(2);
BufferedWriter output = null;
BufferedReader input = null;
try {
if (fileName.exists() != true) {
fileName.createNewFile();
} input = new BufferedReader(new FileReader(currentFile));
output = new BufferedWriter(new FileWriter(fileName));
String ch;
while ((ch = input.readLine()) != null) {
output.write(ch);
output.newLine();
}
input.close();
output.close();
currentFrame.dispose();
DisplayFrame contentFrame = new DisplayFrame();
desktopPane.add(contentFrame);
currentFrame = contentFrame;
currentFile = fileName;
showFile(fileFrame, contentFrame);
} catch (IOException ee) {
JOptionPane.showMessageDialog(null, "文件另存失败!");
}
}
}
} class DisplayFrame extends JInternalFrame implements DocumentListener {
JTextArea displayArea; public DisplayFrame() {
super("文本内容", true, true, true, true);
displayArea = new JTextArea(8, 30);
displayArea.getDocument().addDocumentListener(this);
getContentPane().add(displayArea);
pack();
setVisible(true); } public void changedUpdate(DocumentEvent e) { } public void insertUpdate(DocumentEvent e) {
StringBuffer buffer = new StringBuffer(displayArea.getText());
displayArea.setCaretPosition(displayArea.getDocument().getLength());
} public void removeUpdate(DocumentEvent e) {
StringBuffer buffer = new StringBuffer(displayArea.getText());
displayArea.setCaretPosition(displayArea.getDocument().getLength());
} }}
解决方案 »
- CountDownLatch 计数位0仍然阻塞
- /*!Begin Snippet:file*/。。。刚接触java,这句在类前面,是啥什么意思呢?谢谢您了
- res.sendRedirect("/error.jsp");空指针异常
- java实现字母排序,区分大小写
- 急!!!为什么java重命名不成功?
- 字数统计工具(比WORD先进),改掉了BUG,大家再看看?不可能还有问题了!
- 如何通过反射机制,动态调用静态变量?
- 从数据库中查询数据的效率问题!
- 请问哪里可以打包下载Java的api:j2se/1.4.1/docs/api/index.html
- 谁知道哪里有 Jbuilder 5 企业版下载,我买了一个盗版的,为何安装了,一运行就变成个人版了
- (Max-Min)/Ni]取整 = 4,如何计算Ni的值?
- java 实现一个电话薄
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.OutputStreamWriter;
import java.io.InputStreamReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;import javax.swing.JDesktopPane;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;public class TextEditor extends JFrame {
JDesktopPane desktopPane;JMenuBar menubar;
JMenu fileMenu, helpMenu;
JMenuItem newItem, openItem, saveItem, othersaveItem, closeItem, exitItem;JMenuItem aboutItem;
StringBuffer buffer = new StringBuffer();
File currentFile;
int status;
DisplayFrame currentFrame;public TextEditor() {
super("文本编辑器");
Container container = getContentPane();
desktopPane = new JDesktopPane();
container.add(desktopPane);
createMenu();
setJMenuBar(menubar);
}public void createMenu() {
menubar = new JMenuBar();
fileMenu = new JMenu("文件");
newItem = new JMenuItem("新建");
newItem.addActionListener(new NewFileListener());
openItem = new JMenuItem("打开");
openItem.addActionListener(new OpenFileListener());
saveItem = new JMenuItem("保存");
saveItem.addActionListener(new SaveFileListener());
othersaveItem = new JMenuItem("另存为");
othersaveItem.addActionListener(new OtherSaveFileListener());
closeItem = new JMenuItem("关闭");
closeItem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {
if (e.getSource() == closeItem) {
currentFrame.dispose();
}
}
});exitItem = new JMenuItem("退出");
exitItem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.addSeparator();
fileMenu.add(saveItem);
fileMenu.add(othersaveItem);
fileMenu.addSeparator();
fileMenu.add(closeItem);
fileMenu.add(exitItem);helpMenu = new JMenu("帮助");
aboutItem = new JMenuItem("关于");
aboutItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == aboutItem) {
JOptionPane.showMessageDialog(null, "TextEditor 1.1", "版本",
JOptionPane.INFORMATION_MESSAGE);
}
}
});helpMenu.add(aboutItem);
menubar.add(helpMenu);
menubar.add(helpMenu);
}public File chooseFile(int chooseMode) {
JFileChooser filechooser = new JFileChooser();
filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
int result = 0;
switch (chooseMode) {
case 1:
result = filechooser.showOpenDialog(filechooser);
break;
case 2:
result = filechooser.showSaveDialog(filechooser);
break;
}
if (result == filechooser.CANCEL_OPTION)
return null;
File fileName = filechooser.getCurrentDirectory();
return fileName;
}public void saveFile(File file, int saveMode) throws IOException {
File fileName = null;
switch (saveMode) {
case 0:
fileName = chooseFile(2);
if (fileName.createNewFile() != true)
return;
break;
case 1:
fileName = file;
break;
default:
return;
}
currentFile = fileName;
if (fileName.exists()!= true)
return;
BufferedWriter input = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName)));
input.write(buffer.toString(), 0, buffer.length() - 1);
System.err.println(buffer.length());
if (input != null)
input.close();
status = 1;
}public void showFile(File fileName, DisplayFrame contentFrame) {
try {
BufferedReader output = new BufferedReader(new InputStreamReader(new FileInputStream(fileName)));
String text;
buffer = new StringBuffer();
while ((text = output.readLine()) != null) {
buffer.append(text + "\n");}
contentFrame.displayArea.setText(buffer.toString());
contentFrame.setTitle(fileName.getName());
output.close();
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "错误发生!");
} catch (NullPointerException e) {
JOptionPane.showMessageDialog(null, "警告");
}
}public static void main(String[] args) {
TextEditor texteditor = new TextEditor();
texteditor.setSize(400, 300);
texteditor.setVisible(true);
texteditor.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}class NewFileListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
DisplayFrame txtFrame = new DisplayFrame();
currentFrame = txtFrame;
txtFrame.setTitle("新建文件");
desktopPane.add(txtFrame);
status = 0;
}
}class OpenFileListener implements ActionListener {public void actionPerformed(ActionEvent arg0) {
File fileName = chooseFile(1);
currentFile = fileName;
try {
if (fileName.exists()) {
DisplayFrame contentFrame = new DisplayFrame();
currentFrame = contentFrame;
desktopPane.add(contentFrame);
showFile(fileName, contentFrame);
}
status = 1;
} catch (Exception e) {
}
}
}class SaveFileListener implements ActionListener {public void actionPerformed(ActionEvent e) {
if(e.getSource() == saveItem) {
try {
saveFile(currentFile, status);
}catch(IOException gg) {
JOptionPane.showMessageDialog(null, "保存文件失败!");
}catch(Exception f) {}
}
}}class OtherSaveFileListener implements ActionListener {public void actionPerformed(ActionEvent e) {
if (e.getSource() == othersaveItem) {
File fileName = chooseFile(2);
BufferedWriter output = null;
BufferedReader input = null;
try {
if (fileName.exists() != true) {
fileName.createNewFile();
}input = new BufferedReader(new FileReader(currentFile));
output = new BufferedWriter(new FileWriter(fileName));
String ch;
while ((ch = input.readLine()) != null) {
output.write(ch);
output.newLine();
}
input.close();
output.close();
currentFrame.dispose();
DisplayFrame contentFrame = new DisplayFrame();
desktopPane.add(contentFrame);
currentFrame = contentFrame;
currentFile = fileName;
showFile(fileName, contentFrame);
} catch (IOException ee) {
JOptionPane.showMessageDialog(null, "文件另存失败!");
}
}
}
}class DisplayFrame extends JInternalFrame implements DocumentListener {
JTextArea displayArea;public DisplayFrame() {
super("文本内容", true, true, true, true);
displayArea = new JTextArea(8, 30);
displayArea.getDocument().addDocumentListener(this);
getContentPane().add(displayArea);
pack();
setVisible(true);}public void changedUpdate(DocumentEvent e) {}public void insertUpdate(DocumentEvent e) {
StringBuffer buffer = new StringBuffer(displayArea.getText());
displayArea.setCaretPosition(displayArea.getDocument().getLength());
}public void removeUpdate(DocumentEvent e) {
StringBuffer buffer = new StringBuffer(displayArea.getText());
displayArea.setCaretPosition(displayArea.getDocument().getLength());
}}}