⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 advundotextclass.java

📁 java与模式 一书的源码
💻 JAVA
字号:
package com.javapatterns.command.swingundo;

/**
 * Class Name:  advUndoTextClass
 * Class Desc:  purpose of this class is to use the new Java text undo manager.
 *
 * Startdate:   07/19/1999
 *
 * @author:     Shah Mumin
 *
 * @version:    1.0         07/19/1999
 */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import javax.swing.undo.*;


public class AdvUndoTextClass extends JFrame
                              implements ActionListener,
                                         UndoableEditListener {

  private JPanel          mainSwingpanel    = new JPanel(),
                          textPanel         = new JPanel();
  private JButton         btn               = new JButton("Start"),
                          btn1              = new JButton("Undo"),
                          exit              = new JButton("Exit");
  private Dimension       myDimension       = null;
  private JTextArea       txta              = new JTextArea();
  private JScrollPane     sp                = new JScrollPane();
  private BorderLayout    borderLayout1     = new BorderLayout();
  private UndoManager     undomanager;


  //public constructor
  public AdvUndoTextClass() {

    super("    Components testing   ");
    addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
          System.exit(0);
        }
    });

    try  {
      jbInit();
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }//end of constructor

   //private components initialization
   private void jbInit() throws Exception {

      this.setBackground(Color.pink);
      this.setSize(new Dimension(500, 450));

      myDimension = new Dimension(490, 440);
      mainSwingpanel.setMaximumSize(myDimension);
      mainSwingpanel.setPreferredSize(myDimension);
      mainSwingpanel.setMinimumSize(myDimension);
      mainSwingpanel.setBackground(Color.gray);

      this.getContentPane().add(mainSwingpanel, BorderLayout.CENTER);

      myDimension = new Dimension(450, 300);
      textPanel.setMaximumSize(myDimension);
      textPanel.setPreferredSize(myDimension);
      textPanel.setMinimumSize(myDimension);
      textPanel.setBackground(Color.gray);
      textPanel.setLayout(borderLayout1);

      //attach an undo manager with the textarea
      txta.getDocument().addUndoableEditListener(this);

      textPanel.add(sp, BorderLayout.CENTER);
      sp.getViewport().add(txta, null);
      sp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
      sp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);

      mainSwingpanel.add(textPanel);

      btn.addActionListener(this);
      btn1.addActionListener(this);
      exit.addActionListener(this);
      mainSwingpanel.add(btn);
      mainSwingpanel.add(btn1);
      mainSwingpanel.add(exit);
   }

   //required public main method
   public static void main(String[] args) {

      JFrame frame = new AdvUndoTextClass();
      frame.pack();
      frame.setVisible(true);
      frame.setSize(500, 450);
      frame.setBackground(Color.red);
      frame.setTitle("Text Undo Testing");

   } //end of main

   //implementation of interface
   public void actionPerformed(ActionEvent evt) {

      String arg = evt.getActionCommand();
      if(arg.equals("Exit"))
        System.exit(0);
      else if(arg.equals("Start")) {
        //initialize the UndoManager
        System.out.println("Start Undo manager");
        undomanager = new UndoManager();
        undomanager.setLimit(1000);
        txta.requestFocus();
      }
      else if(arg.equals("Undo")) {
        System.out.println("Undo all changes");
        if (undomanager != null) {
          undomanager.end();
          undomanager.undo();
          undomanager = null;
        }
        else {
          Toolkit.getDefaultToolkit().beep();
        }
        txta.requestFocus();
      }

   }//end of actionPerformed()

   public void undoableEditHappened(UndoableEditEvent e) {
      if (undomanager != null) {
        undomanager.addEdit(e.getEdit());
        System.out.println(e.getEdit());
      }
   }


}//end of class  advUndoTextClass

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -