undoabletoggleapp3.java
来自「java swing 开发代码」· Java 代码 · 共 112 行
JAVA
112 行
// UndoableToggleApp3.java// A sample app showing the use of UndoManager.//package jswing.ch18;import javax.swing.*;import javax.swing.event.*;import javax.swing.undo.*;import java.awt.*;import java.awt.event.*;public class UndoableToggleApp3 extends JFrame { private UndoManager manager = new UndoManager(); private JButton undoButton; private JButton redoButton; // Create the main frame and everything in it. public UndoableToggleApp3() { // Create some toggle buttons. UndoableJToggleButton tog1 = new UndoableJToggleButton("One"); UndoableJToggleButton tog2 = new UndoableJToggleButton("Two"); UndoableJToggleButton tog3 = new UndoableJToggleButton("Three"); // Add our listener to each toggle button. SimpleUEListener sl = new SimpleUEListener(); tog1.addUndoableEditListener(sl); tog2.addUndoableEditListener(sl); tog3.addUndoableEditListener(sl); // Lay out the buttons. Box buttonBox = new Box(BoxLayout.Y_AXIS); buttonBox.add(tog1); buttonBox.add(tog2); buttonBox.add(tog3); // Create undo and redo buttons (initially disabled). undoButton = new JButton("Undo"); redoButton = new JButton("Redo"); undoButton.setEnabled(false); redoButton.setEnabled(false); // Add a listener to the undo button. It attempts to call undo() on the // UndoManager, then enables/disables the undo/redo buttons as appropriate. undoButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ev) { try { manager.undo(); } catch (CannotUndoException ex) { ex.printStackTrace(); } finally { updateButtons(); } } }); // Add a redo listener: just like the undo listener. redoButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ev) { try { manager.redo(); } catch (CannotRedoException ex) { ex.printStackTrace(); } finally { updateButtons(); } } }); // Lay out the undo/redo buttons. Box undoRedoBox = new Box(BoxLayout.X_AXIS); undoRedoBox.add(Box.createGlue()); undoRedoBox.add(undoButton); undoRedoBox.add(Box.createHorizontalStrut(2)); undoRedoBox.add(redoButton); undoRedoBox.add(Box.createGlue()); // Lay out the main frame. getContentPane().setLayout(new BorderLayout()); getContentPane().add(buttonBox, BorderLayout.CENTER); getContentPane().add(undoRedoBox, BorderLayout.SOUTH); setSize(400, 150); } public class SimpleUEListener implements UndoableEditListener { // When an UndoableEditEvent is generated (each time one of the buttons // is pressed), we add it to the UndoManager and then get the manager's // undo/redo names and set the undo/redo button labels. Finally, we // enable/disable these buttons by asking the manager what we are // allowed to do. public void undoableEditHappened(UndoableEditEvent ev) { manager.addEdit(ev.getEdit()); updateButtons(); } } // Method to set the text and state of the undo/redo buttons. protected void updateButtons() { undoButton.setText(manager.getUndoPresentationName()); redoButton.setText(manager.getRedoPresentationName()); undoButton.getParent().validate(); undoButton.setEnabled(manager.canUndo()); redoButton.setEnabled(manager.canRedo()); } // Main program just creates the frame and displays it. public static void main(String[] args) { JFrame f = new UndoableToggleApp3(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?