Java Swing 支持 撤销和恢复功能 ctrl+z ctrl+y

Java Swing 支持 撤销和恢复功能 ctrl+z ctrl+y.

package com.citi.wws.backup;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.undo.UndoManager;

public class UndoDemo extends JFrame implements ActionListener {

	static JTextArea textArea = new JTextArea();
	static JPanel pannel = new JPanel();
	static JButton unbtn = new JButton("撤销");
	static JButton rebtn = new JButton("恢复");
	static UndoManager undoManager = new UndoManager();

	UndoDemo() {

		super("撤销、恢复功能实例");
		setVisible(true);
		setSize(400, 300);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLayout(new BorderLayout(5, 5));

		pannel.setLayout(new FlowLayout(5));
		pannel.add(unbtn);
		pannel.add(rebtn);
		add(pannel, BorderLayout.NORTH);
		add(textArea, BorderLayout.CENTER);

		textArea.getDocument().addUndoableEditListener(undoManager);

		textArea.addKeyListener(new KeyListener() {

			@Override
			public void keyReleased(KeyEvent arg0) {
			}

			@Override
			public void keyPressed(KeyEvent evt) {
				if (evt.isControlDown() && evt.getKeyCode() == KeyEvent.VK_Z) {
					if (undoManager.canUndo()) {
						undoManager.undo();
					}
				}
				if (evt.isControlDown() && evt.getKeyCode() == KeyEvent.VK_Y) {
					if (undoManager.canRedo()) {
						undoManager.redo();
					}
				}
			}

			@Override
			public void keyTyped(KeyEvent arg0) {
			}
		});

		unbtn.addActionListener(this);
		rebtn.addActionListener(this);
	}

	public void actionPerformed(ActionEvent ent) {
		if (ent.getSource().equals(unbtn)) {
			if (undoManager.canUndo()) {
				undoManager.undo();
			}
		}
		if (ent.getSource().equals(rebtn)) {
			if (undoManager.canRedo()) {
				undoManager.redo();
			}
		}
	}

	public static void main(String[] args) {
		new UndoDemo();
	}
}


  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Java中实现类似于Ctrl+V的粘贴功能,你可以通过使用JavaFX或Swing来创建一个GUI应用程序,并在应用程序中添加一个文本框或其他组件来接收粘贴的内容。 以下是使用JavaFX实现Ctrl+V功能的示例代码: ```java import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.TextArea; import javafx.scene.input.Clipboard; import javafx.scene.input.ClipboardContent; import javafx.stage.Stage; public class PasteExample extends Application { @Override public void start(Stage primaryStage) { TextArea textArea = new TextArea(); // 监听粘贴事件 textArea.setOnKeyPressed(event -> { if (event.isControlDown() && event.getCode().toString().equals("V")) { // 获取系统剪贴板内容 Clipboard clipboard = Clipboard.getSystemClipboard(); if (clipboard.hasString()) { String content = clipboard.getString(); // 在文本区域中插入粘贴的内容 textArea.insertText(textArea.getCaretPosition(), content); } } }); primaryStage.setScene(new Scene(textArea, 400, 300)); primaryStage.show(); } public static void main(String[] args) { launch(args); } } ``` 在上述代码中,我们创建了一个JavaFX应用程序,并在文本区域中添加了一个按键监听器。当用户按下Ctrl+V时,监听器会检查系统剪贴板中是否有文本内容,并将其插入到文本区域中。 你可以根据自己的需求进行调整和扩展。请注意,上述代码仅涵盖了JavaFX的实现。如果你使用Swing或其他GUI库,代码会有所不同,但基本思路是相似的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值