📄 undointextpaneframe.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 + -