<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 38,  comments - 22,  trackbacks - 0

    package urdo;

    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.InputEvent;
    import java.awt.event.KeyEvent;

    import javax.swing.AbstractAction;
    import javax.swing.Action;
    import javax.swing.JButton;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.KeyStroke;
    import javax.swing.UIManager;
    import javax.swing.WindowConstants;
    import javax.swing.event.UndoableEditEvent;
    import javax.swing.event.UndoableEditListener;
    import javax.swing.undo.CannotRedoException;
    import javax.swing.undo.CannotUndoException;
    import javax.swing.undo.UndoManager;

    public class NewJFrame extends javax.swing.JFrame {
    ?private JPanel jp1;

    ?private JButton jb1;

    ?private JButton jb2;

    ?private JMenuItem jm12;

    ?private JMenuItem jm11;

    ?private JMenu jm;

    ?private JMenuBar jMenuBar1;

    ?private JTextArea jta;

    ?private JScrollPane jsp;

    ?/**
    ? * Auto-generated main method to display this JFrame
    ? */
    ?public static void main(String[] args) {
    ??NewJFrame inst = new NewJFrame();
    ??inst.setVisible(true);
    ?}

    ?public NewJFrame() {
    ??super();
    ??initGUI();
    ?}

    ?private void initGUI() {
    ??try {
    ???setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    ???{
    ????jMenuBar1 = new JMenuBar();
    ????setJMenuBar(jMenuBar1);
    ????{
    ?????jm = new JMenu();
    ?????jMenuBar1.add(jm);
    ?????jm.setText("jm");
    ?????{
    ??????jm11 = new JMenuItem(redoAction);
    ??????jm.add(jm11);
    ??????jm11.setText("re");
    ?????}
    ?????{
    ??????jm12 = new JMenuItem(undoAction);
    ??????jm.add(jm12);
    ??????jm12.setText("undo");
    ?????}
    ?????jm12.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,
    ???????InputEvent.CTRL_MASK));
    ????}
    ???}
    ???{
    ????jp1 = new JPanel();
    ????getContentPane().add(jp1, BorderLayout.NORTH);
    ????jp1.setPreferredSize(new java.awt.Dimension(392, 35));
    ????{
    ?????jb1 = new JButton(redoAction);
    ?????jp1.add(jb1);
    ?????jb1.setText("redo");
    ????}
    ????//????jb1.registerKeyboardAction(redoAction, KeyStroke.getKeyStroke(
    ????//??????KeyEvent.VK_Y, KeyEvent.CTRL_DOWN_MASK, true),
    ????//??????JComponent.WHEN_IN_FOCUSED_WINDOW);
    ????{
    ?????jb2 = new JButton(undoAction);
    ?????jp1.add(jb2);
    ?????jb2.setText("undo");
    ????}
    ????//????jb2.registerKeyboardAction(undoAction, KeyStroke.getKeyStroke(
    ????//??????KeyEvent.VK_Z, KeyEvent.CTRL_DOWN_MASK, true),
    ????//??????JComponent.WHEN_IN_FOCUSED_WINDOW);

    ???}
    ???{
    ????jsp = new JScrollPane();
    ????getContentPane().add(jsp, BorderLayout.CENTER);
    ????{
    ?????jta = new JTextArea();
    ?????jsp.setViewportView(jta);
    ?????jta.getDocument().addUndoableEditListener(undoHandler);
    ????}
    ???}
    ???pack();
    ???setSize(400, 300);
    ??} catch (Exception e) {
    ???e.printStackTrace();
    ??}
    ?}

    ?protected UndoableEditListener undoHandler = new UndoHandler();

    ?protected UndoManager undo = new UndoManager();

    ?private UndoAction undoAction = new UndoAction();

    ?private RedoAction redoAction = new RedoAction();

    ?class UndoHandler implements UndoableEditListener {

    ??/**
    ?? * Messaged when the Document has created an edit, the edit is
    ?? * added to <code>undo</code>, an instance of UndoManager.
    ?? */
    ??public void undoableEditHappened(UndoableEditEvent e) {
    ???undo.addEdit(e.getEdit());
    ???undoAction.update();
    ???redoAction.update();
    ??}
    ?}

    ?class UndoAction extends AbstractAction {
    ??public UndoAction() {
    ???super();
    ???setEnabled(false);
    ??}

    ??public void actionPerformed(ActionEvent e) {
    ???try {
    ????undo.undo();
    ???} catch (CannotUndoException ex) {
    ????ex.printStackTrace();
    ???}
    ???update();
    ???redoAction.update();
    ??}

    ??protected void update() {
    ???if (undo.canUndo()) {
    ????setEnabled(true);
    ????//????System.out.println(undo.getUndoPresentationName());
    ????putValue(Action.NAME, undo.getUndoPresentationName());
    ???} else {
    ????setEnabled(false);
    ????putValue(Action.NAME, "撤消");
    ???}
    ??}
    ?}

    ?class RedoAction extends AbstractAction {
    ??public RedoAction() {
    ???super();
    ???setEnabled(false);
    ??}

    ??public void actionPerformed(ActionEvent e) {
    ???try {
    ????undo.redo();
    ???} catch (CannotRedoException ex) {
    ????ex.printStackTrace();
    ???}
    ???update();
    ???undoAction.update();
    ??}

    ??protected void update() {
    ???if (undo.canRedo()) {
    ????setEnabled(true);
    ????putValue(Action.NAME, undo.getRedoPresentationName());
    ???} else {
    ????setEnabled(false);
    ????putValue(Action.NAME, "重做");
    ???}
    ??}
    ?}
    }

    posted on 2007-01-25 09:46 aaabbb 閱讀(695) 評論(1)  編輯  收藏 所屬分類: Swing
    主站蜘蛛池模板: 亚洲精华国产精华精华液| 亚洲电影在线免费观看| 国产午夜亚洲精品不卡| 女人毛片a级大学毛片免费| 亚洲砖码砖专无区2023| 好爽又高潮了毛片免费下载| 亚洲午夜成人精品无码色欲| 日本免费电影一区| 国产精品亚洲精品日韩动图| www.亚洲精品| 国产羞羞的视频在线观看免费 | 国产高清免费在线| 看一级毛片免费观看视频| 亚洲AV无码乱码精品国产| 一本久久免费视频| 亚洲成在人线av| 噼里啪啦免费观看高清动漫4| 久久久久精品国产亚洲AV无码| 毛片a级三毛片免费播放| 亚洲精品久久无码| 亚洲一区二区高清| 久久99热精品免费观看动漫| 亚洲狠狠狠一区二区三区| 性感美女视频在线观看免费精品| 国产精品亚洲专区无码WEB| 亚洲国产精品激情在线观看 | 天堂亚洲免费视频| 亚洲AV无码成人网站久久精品大 | 香蕉国产在线观看免费| 亚洲精品无码久久久久sm| 18禁成人网站免费观看 | 一本岛v免费不卡一二三区| 亚洲国产精品SSS在线观看AV | 最近免费中文字幕高清大全| 中文字幕在线日亚洲9| 亚洲欧洲久久久精品| **俄罗斯毛片免费| 特级毛片aaaa免费观看| 亚洲av无码不卡久久| JLZZJLZZ亚洲乱熟无码| www.黄色免费网站|