undointextpaneframe.java

来自「JGraph扩展应用。自定义Renderer,自定义视图View实现自定义工作流」· Java 代码 · 共 118 行

JAVA
118
字号
/**
 * 
 */
package flow.graph.test.test;

/**
 * @author Administrator
 *
 */
import javax.swing.*;
import javax.swing.event.UndoableEditEvent;
import javax.swing.event.UndoableEditListener;
import javax.swing.text.Document;
import javax.swing.undo.CannotUndoException;
import javax.swing.undo.UndoManager;
 
 
public class UndoInTextPaneFrame extends JFrame{
    
    final static int NO_OFPANELS=10;
    DynamicPanels[] arrayOfPanels=new DynamicPanels[NO_OFPANELS];
    
    private javax.swing.JButton jButton1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    
    public UndoInTextPaneFrame(){
        
        jScrollPane1 = new javax.swing.JScrollPane();
        jPanel1 = new javax.swing.JPanel();
        jButton1 = new javax.swing.JButton("UNDO");
        
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                System.out.println("UNDO button clicked");
            }
        });
        
        
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Frame to add UNDO property");
        setSize(400,300);
        getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.Y_AXIS));
        jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
        jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        
        jPanel1.setLayout(new javax.swing.BoxLayout(jPanel1, javax.swing.BoxLayout.Y_AXIS));
        
        
        for(int i=0;i<arrayOfPanels.length;i++){
            arrayOfPanels[i]= new DynamicPanels(i);
            jPanel1.add(arrayOfPanels[i]);
            
            //LOGIC FOR UNDO
            // JTextPane txtPane=(JTextPane)arrayOfPanels[i].getComponent(0);
            
            
        }
        
        jScrollPane1.setViewportView(jPanel1);
        getContentPane().add(jScrollPane1);
        getContentPane().add(jButton1);
        
        
    }
    
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new UndoInTextPaneFrame().setVisible(true);
            }
        });
    }
    
    
}
 
 
class DynamicPanels extends JPanel{
    
    final  UndoManager undo;
    private JTextPane jTextPane1;
    private JComboBox jComboBox1;
    private JScrollPane jScrollPane1;
    
    public DynamicPanels(int number) {
        jTextPane1 = new JTextPane();
        jComboBox1=new JComboBox();
        
        jScrollPane1=new JScrollPane();
        
        Document doc = jTextPane1.getDocument();
        undo= new UndoManager();
        // Listen for undo and redo events
        doc.addUndoableEditListener(new UndoableEditListener() {
            public void undoableEditHappened(UndoableEditEvent evt) {
                undo.addEdit(evt.getEdit());
            }
        });
       
        /* 
        try {
                    if (undo.canUndo()) {
                        undo.undo();
                    }
                } catch (CannotUndoException e) {
                }
        */
        
        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        jScrollPane1.setViewportView(jTextPane1);
        setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.X_AXIS));
        add(jScrollPane1);
        add(jComboBox1);
        
    }
}

⌨️ 快捷键说明

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