package appli; /* JEditorPaneFileChooser.java * Copyright (c) 2014, HerongYang.com, All Rights Reserved. */ import java.io.*; import java.nio.*; import java.nio.charset.*; import java.awt.event.*; import javax.swing.*; import javax.swing.filechooser.*; public class gui implements ActionListener { JFrame myFrame = null; JEditorPane myPane = null; JMenuItem cmdOpen = null; JMenuItem cmdSave = null; String dirName = "\\herong\\swing\\"; String fileName = "JEditorPane.txt"; public static void main(String[] a) { (new gui()).test(); } private void test() { myFrame = new JFrame("JEditorPane JFileChooser Test"); myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); myFrame.setSize(300,200); myPane = new JEditorPane(); myPane.setContentType("text/plain"); myPane.setText( "Hello computer! - \u7535\u8111\u4F60\u597D\uFF01\n" + "Welcome to Herong's Website!\n" + "\u6B22\u8FCE\u4F60\u8BBF\u95EE\u548C\u8363\u7F51\u7AD9" + "\uFF01\nwww.herongyang.com"); myFrame.setContentPane(myPane); JMenuBar myBar = new JMenuBar(); JMenu myMenu = getFileMenu(); myBar.add(myMenu); myFrame.setJMenuBar(myBar); myFrame.setVisible(true); } private JMenu getFileMenu() { JMenu myMenu = new JMenu("File"); cmdOpen = new JMenuItem("Open"); cmdOpen.addActionListener(this); myMenu.add(cmdOpen); cmdSave = new JMenuItem("Save"); cmdSave.addActionListener(this); myMenu.add(cmdSave); return myMenu; } public void actionPerformed(ActionEvent e) { JFileChooser chooser = new JFileChooser(); chooser.setCurrentDirectory(new File(dirName)); chooser.setSelectedFile(new File(fileName)); chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); FileNameExtensionFilter filter = new FileNameExtensionFilter( ".txt and .java files", "txt", "java"); chooser.setFileFilter(filter); Object cmd = e.getSource(); try { if (cmd == cmdOpen) { int code = chooser.showOpenDialog(myPane); if (code == JFileChooser.APPROVE_OPTION) { File selectedFile = chooser.getSelectedFile(); fileName = selectedFile.getName(); FileInputStream fis = new FileInputStream(selectedFile); InputStreamReader in = new InputStreamReader(fis, Charset.forName("UTF-8")); char[] buffer = new char[1024]; int n = in.read(buffer); String text = new String(buffer, 0, n); myPane.setText(text); in.close(); } } else if (cmd == cmdSave) { int code = chooser.showOpenDialog(myPane); if (code == JFileChooser.APPROVE_OPTION) { File selectedFile = chooser.getSelectedFile(); fileName = selectedFile.getName(); FileOutputStream fos = new FileOutputStream(selectedFile); OutputStreamWriter out = new OutputStreamWriter(fos, Charset.forName("UTF-8")); out.write(myPane.getText()); out.close(); } } } catch (Exception f) { f.printStackTrace(); } } }