JEditorPane和HTML包6 : 文字编辑模板 « 图形用户界面 « Java

En
Java
1. 图形用户界面
2. 三维图形动画
3. 高级图形
4. 蚂蚁编译
5. Apache类库
6. 统计图
7. 
8. 集合数据结构
9. 数据类型
10. 数据库JDBC
11. 设计模式
12. 开发相关类
13. EJB3
14. 电子邮件
15. 事件
16. 文件输入输出
17. 游戏
18. 泛型
19. GWT
20. Hibernate
21. 本地化
22. J2EE平台
23. 基于J2ME
24. JDK-6
25. JNDI的LDAP
26. JPA
27. JSP技术
28. JSTL
29. 语言基础知识
30. 网络协议
31. PDF格式RTF格式
32. 映射
33. 常规表达式
34. 脚本
35. 安全
36. Servlets
37. Spring
38. Swing组件
39. 图形用户界面
40. SWT-JFace-Eclipse
41. 线程
42. 应用程序
43. Velocity
44. Web服务SOA
45. 可扩展标记语言
Java 教程
Java » 图形用户界面 » 文字编辑模板屏幕截图 
JEditorPane和HTML包6
JEditorPane和HTML包6
  
/*
Core SWING Advanced Programming 
By Kim Topley
ISBN: 0 13 083292 8       
Publisher: Prentice Hall  
*/

import java.awt.Color;
import java.awt.Cursor;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.URL;

import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;

public class EditorPaneExample6 extends JFrame {
  public EditorPaneExample6() {
    super("JEditorPane Example 6");

    pane = new JEditorPane();
    pane.setEditable(false)// Start read-only
    getContentPane().add(new JScrollPane(pane)"Center");

    // Build the panel of controls
    JPanel panel = new JPanel();

    panel.setLayout(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();
    c.gridwidth = 1;
    c.gridheight = 1;
    c.anchor = GridBagConstraints.EAST;
    c.fill = GridBagConstraints.NONE;
    c.weightx = 0.0;
    c.weighty = 0.0;

    JLabel urlLabel = new JLabel("File name: ", JLabel.RIGHT);
    panel.add(urlLabel, c);
    JLabel loadingLabel = new JLabel("State: ", JLabel.RIGHT);
    c.gridy = 1;
    panel.add(loadingLabel, c);
    JLabel typeLabel = new JLabel("Type: ", JLabel.RIGHT);
    c.gridy = 2;
    panel.add(typeLabel, c);

    c.gridx = 1;
    c.gridy = 0;
    c.gridwidth = 1;
    c.weightx = 1.0;
    c.fill = GridBagConstraints.HORIZONTAL;

    textField = new JTextField(32);
    panel.add(textField, c);
    loadingState = new JLabel(spaces, JLabel.LEFT);
    loadingState.setForeground(Color.black);
    c.gridy = 1;
    c.gridwidth = 2;
    panel.add(loadingState, c);
    loadedType = new JLabel(spaces, JLabel.LEFT);
    loadedType.setForeground(Color.black);
    c.gridy = 2;
    panel.add(loadedType, c);

    // Add a "Save" button
    saveButton = new JButton("Save");
    saveButton.setEnabled(false);
    c.gridwidth = 1;
    c.gridx = 2;
    c.gridy = 0;
    c.weightx = 0.0;
    panel.add(saveButton, c);

    getContentPane().add(panel, "South");

    // Change page based on text field
    textField.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        String fileName = textField.getText().trim();
        file = new File(fileName);
        absolutePath = file.getAbsolutePath();
        String url = "file:///" + absolutePath;

        try {
          // Check if the new page and the old
          // page are the same.
          URL newURL = new URL(url);
          URL loadedURL = pane.getPage();
          if (loadedURL != null && loadedURL.sameFile(newURL)) {
            return;
          }

          // Try to display the page
          textField.setEnabled(false)// Disable input
          textField.paintImmediately(00, textField.getSize().width,
              textField.getSize().height);

          saveButton.setEnabled(false);
          saveButton.paintImmediately(00,
              saveButton.getSize().width,
              saveButton.getSize().height);
          setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
          // Busy cursor
          loadingState.setText("Loading...");
          loadingState.paintImmediately(00,
              loadingState.getSize().width, loadingState
                  .getSize().height);
          loadedType.setText("");
          loadedType.paintImmediately(00,
              loadedType.getSize().width,
              loadedType.getSize().height);
          pane.setEditable(false);
          pane.setPage(url);

          loadedType.setText(pane.getContentType());
        catch (Exception e) {
          JOptionPane.showMessageDialog(pane, new String[] {
              "Unable to open file", url }"File Open Error",
              JOptionPane.ERROR_MESSAGE);
          loadingState.setText("Failed");
          textField.setEnabled(true);
          setCursor(Cursor.getDefaultCursor());
        }
      }
    });

    // Listen for page load to complete
    pane.addPropertyChangeListener(new PropertyChangeListener() {
      public void propertyChange(PropertyChangeEvent evt) {
        if (evt.getPropertyName().equals("page")) {
          loadingState.setText("Page loaded.");

          textField.setEnabled(true)// Allow entry of new file name
          textField.requestFocus();
          setCursor(Cursor.getDefaultCursor());

          // Allow editing and saving if appropriate
          pane.setEditable(file.canWrite());
          saveButton.setEnabled(file.canWrite());
        }
      }
    });

    // Save button
    saveButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        try {
          String type = pane.getContentType();
          OutputStream os = new BufferedOutputStream(
              new FileOutputStream(file + ".save"));
          pane.setEditable(false);
          textField.setEnabled(false);
          saveButton.setEnabled(false);
          setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

          Document doc = pane.getDocument();
          int length = doc.getLength();
          if (type.endsWith("/rtf")) {
            // Saving RTF - use the OutputStream
            try {
              pane.getEditorKit().write(os, doc, 0, length);
              os.close();
            catch (BadLocationException ex) {
            }
          else {
            // Not RTF - use a Writer.
            Writer w = new OutputStreamWriter(os);
            pane.write(w);
            w.close();
          }
        catch (IOException e) {
          JOptionPane.showMessageDialog(pane, new String[] {
              "Unable to save file", file.getAbsolutePath()},
              "File Save Error", JOptionPane.ERROR_MESSAGE);

        }
        pane.setEditable(file.canWrite());
        textField.setEnabled(true);
        saveButton.setEnabled(file.canWrite());
        setCursor(Cursor.getDefaultCursor());
      }
    });
  }

  public static void main(String[] args) {
    try {
        UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
    catch (Exception evt) {}
  
    JFrame f = new EditorPaneExample6();

    f.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) {
        System.exit(0);
      }
    });
    f.setSize(500400);
    f.setVisible(true);
  }

  private static final String spaces = "                    ";

  private File file;

  private String absolutePath;

  private JEditorPane pane;

  private JTextField textField;

  private JLabel loadingState;

  private JLabel loadedType;

  private JButton saveButton;
}


           
         
    
  
Related examples in the same category
1. 查看RTF格式查看RTF格式
2. EditorPane样本EditorPane样本
3. Setting the Font and Color of Text in a JTextPane Using Styles: Makes text red
4. Setting the Font and Color of Text in a JTextPane Using Styles: Inherits from "Red"; makes text red and underlined
5. Setting the Font and Color of Text in a JTextPane Using Styles: Makes text 24pts
6. Setting the Font and Color of Text in a JTextPane Using Styles: Makes text italicized
7. JEditorPane和HTML封装JEditorPane和HTML封装
8. JEditorPane和HTML包2JEditorPane和HTML包2
9. JEditorPane和HTML包3JEditorPane和HTML包3
10. JEditorPane和HTML包4JEditorPane和HTML包4
11. JEditorPane和HTML包5JEditorPane和HTML包5
12. JEditorPane和HTML包装7JEditorPane和HTML包装7
13. JEditorPane和HTML包装8JEditorPane和HTML包装8
14. JEditorPane和HTML封装9JEditorPane和HTML封装9
15. EditorPane例如10EditorPane例如10
16. JEditorPane实例10 -使用getIteratorJEditorPane实例10 -使用getIterator
17. JEditorPane实例11JEditorPane实例11
18. JEditorPane实例12JEditorPane实例12
19. JEditorPane实例13JEditorPane实例13
20. JEditorPane实例14JEditorPane实例14
21. JEditorPane实例15JEditorPane实例15
22. JEditorPane实例16JEditorPane实例16
23. JEditorPane实例17JEditorPane实例17
24. JEditorPane实例18JEditorPane实例18
25. JEditorPane实例19JEditorPane实例19
26. JEditorPane实例20JEditorPane实例20
27. JEditorPane和HyperlinkListener演示
28. Create a right-aligned tab stop at 200 pixels from the left margin
29. Create a center-aligned tab stop at 300 pixels from the left margin
30. Create a decimal-aligned tab stop at 400 pixels from the left margin
31. 使用SimpleAttributeSet与JTextPane
32. 查看HTML
33. 查看网页
34. Change mouse cursor during mouse-over action on hyperlinks
35. 创建一个简单的浏览器
36. 新增彩色文本
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.