swing 文本框快捷键

如何给文本框增加快捷键呢?

Ctrl+Z :恢复(undo)

Ctrl+C :拷贝

Ctrl+X :剪切

Ctrl+V :黏贴

Ctrl+Y :重做

Ctrl+R :使...只读

Ctrl+E :使...可编辑

Ctrl+D :清空文本框

文本框快捷键

	public void addActionMap() {
		getActionMap().put("Undo", new AbstractAction("Undo11") {
			private static final long serialVersionUID = 2434402629308759912L;

			public void actionPerformed(ActionEvent evt) {
				try {
					boolean b = undo.canUndo();
					// System.out.println("whether undo : "+b);
					if (b) {
						undo.undo();
					}
				} catch (CannotUndoException e) {
				}
			}
		});
		getInputMap().put(KeyStroke.getKeyStroke("control Z"), "Undo");

		getActionMap().put("Redo", new AbstractAction("Redo1111") {
			private static final long serialVersionUID = 5348330289578410517L;

			public void actionPerformed(ActionEvent evt) {
				try {
					if (undo.canRedo()) {
						undo.redo();
					}
				} catch (CannotRedoException e) {
				}
			}
		});
		getInputMap().put(KeyStroke.getKeyStroke("control R"), "Redo");

		getActionMap().put("Copy", new AbstractAction("Copy111") {
			private static final long serialVersionUID = -5151480809625853288L;

			public void actionPerformed(ActionEvent evt) {
				copy();
			}

		});
		getInputMap().put(KeyStroke.getKeyStroke("control C"), "Copy");

		getActionMap().put("Cut", new AbstractAction("Cut") {

			private static final long serialVersionUID = 7316612864835857713L;

			public void actionPerformed(ActionEvent evt) {
				cut();
			}

		});

		getInputMap().put(KeyStroke.getKeyStroke("control X"), "Cut");

		getActionMap().put("Paste", new AbstractAction("Paste111") {
			private static final long serialVersionUID = -3548620001691220571L;

			public void actionPerformed(ActionEvent evt) {
				paste();
			}
		});

		getInputMap().put(KeyStroke.getKeyStroke("control V"), "Paste");

		// redo Ctrl + Y
		getActionMap().put("Redo", new AbstractAction("reDo111") {
			private static final long serialVersionUID = -3548620001691220571L;

			public void actionPerformed(ActionEvent evt) {
				if (undo.canRedo()) {
					undo.redo();
				}
			}
		});

		getInputMap().put(KeyStroke.getKeyStroke("control Y"), "Redo");

		getActionMap().put("Save", new AbstractAction("save111") {
			private static final long serialVersionUID = -3548620001691220571L;
			public void actionPerformed(ActionEvent evt) {
				dealSave((JTextComponent)evt.getSource());
			}
		});

		getInputMap().put(KeyStroke.getKeyStroke("control S"), "Save");

		//按Ctrl+R 使文本框只读,不可编辑
		getActionMap().put("Readonly", new AbstractAction("Readonly111") {
			private static final long serialVersionUID = -3548620001691220571L;
			public void actionPerformed(ActionEvent evt) {
				JTextComponent tf=(JTextComponent)evt.getSource();
				if(!ValueWidget.isNullOrEmpty(tf)){
					tf.setEditable(false);
				}
			}
		});
		getInputMap().put(KeyStroke.getKeyStroke("control R"), "Readonly");
		
		//按Ctrl+E 使文本框可编辑
		getActionMap().put("Editable", new AbstractAction("Editable111") {
			private static final long serialVersionUID = -3548620001691220571L;
			public void actionPerformed(ActionEvent evt) {
				JTextComponent tf=(JTextComponent)evt.getSource();
				if(!ValueWidget.isNullOrEmpty(tf)){
					tf.setEditable(true);
					tf.requestFocus();
//					tf.repaint();
					tf.updateUI();
				}
			}
		});
		getInputMap().put(KeyStroke.getKeyStroke("control E"), "Editable");
		
		//按Ctrl+D 清空文本框
		getActionMap().put("cleanUp", new AbstractAction("cleanUp111") {
			private static final long serialVersionUID = -3548620001691220571L;
			public void actionPerformed(ActionEvent evt) {
				JTextComponent tf=(JTextComponent)evt.getSource();
				if(!ValueWidget.isNullOrEmpty(tf)){
					tf.setText(SystemHWUtil.EMPTY);
					tf.requestFocus();
				}
			}
		});
		getInputMap().put(KeyStroke.getKeyStroke("control D"), "cleanUp");
	}

 具体见源代码中的com.swing.component.UndoTextArea

猜你喜欢

转载自hw1287789687.iteye.com/blog/2254563