<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 閱讀(696) 評論(1)  編輯  收藏 所屬分類: Swing
    主站蜘蛛池模板: 国产成人aaa在线视频免费观看| 国产精品免费网站| 国产免费av一区二区三区| 亚洲Av无码一区二区二三区| 成人免费福利视频| 亚洲国产中文在线二区三区免| 亚洲电影免费观看| 亚洲综合校园春色| 一个人在线观看视频免费| 亚洲综合久久精品无码色欲| 免费国产黄线在线观看| 国产精品亚洲综合天堂夜夜| 国产成人免费福利网站| 九九久久国产精品免费热6| 亚洲精品视频免费| 免费91最新地址永久入口| 亚洲综合精品香蕉久久网97| 国产在线观看麻豆91精品免费| 又硬又粗又长又爽免费看| 亚洲Av无码国产情品久久| 一级特黄aaa大片免费看| 亚洲国产精品无码中文字| 久久久精品2019免费观看| 国产精品高清视亚洲精品| 日本成人免费在线| caoporm超免费公开视频| 亚洲AV无码专区电影在线观看| 91成人在线免费视频| 亚洲GV天堂GV无码男同| 伊人婷婷综合缴情亚洲五月| 精品一区二区三区无码免费视频 | 久久这里只有精品国产免费10| 亚洲人成自拍网站在线观看| 亚洲人成无码网WWW| 免费A级毛片av无码| 亚洲avav天堂av在线网毛片| 亚洲日韩国产一区二区三区| 最近中文字幕国语免费完整 | 免费人成网站永久| 亚洲天堂视频在线观看| 国产精品久久香蕉免费播放|