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

📄 undointextpaneframe.java

📁 JGraph扩展应用。自定义Renderer,自定义视图View实现自定义工作流控件
💻 JAVA
字号:
/**
 * 
 */
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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -