📄 copycutpaste.java
字号:
package net.aetherial.gis.surface.main;
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.KeyEvent;
import java.awt.event.ActionListener;
import javax.swing.undo.UndoManager;
import javax.swing.undo.CannotUndoException;
import javax.swing.text.JTextComponent;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2004</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class CopyCutPaste extends MouseAdapter{
JPopupMenu jPopupMenu = new JPopupMenu();
JMenuItem jMenuItemResume = new JMenuItem();
JMenuItem jMenuItemCopy = new JMenuItem();
JMenuItem jMenuItemCut = new JMenuItem();
JMenuItem jMenuItemPaste = new JMenuItem();
private JTextComponent jc = null;
CopyCutPaste_jMenuItem_actionAdapter ccp = new CopyCutPaste_jMenuItem_actionAdapter(this);
protected UndoManager undo = new UndoManager();
public CopyCutPaste(JTextComponent jc) {
try {
jbInit();
this.jc = jc;
}
catch (Exception exception) {
exception.printStackTrace();
}
}
public void mouseReleased(MouseEvent e) {
maybeShowPopup(e);
}
private void maybeShowPopup(MouseEvent e) {
if (e.isPopupTrigger()) {
this.jPopupMenu.show(e.getComponent(),
e.getX(), e.getY());
}
// System.out.println("[Class CopyCutPaste]e.getX():" + e.getX() + ", e.getY():" + e.getY());
}
/**
* 设置撤销是否能用
*/
public void setResumeEnable(boolean enable) {
this.jMenuItemResume.setEnabled(enable);
}
/**
* 设置拷贝是否能用
*/
public void setResumeCopy(boolean enable) {
this.jMenuItemCopy.setEnabled(enable);
}
/**
* 设置粘贴是否能用
*/
public void setPasteEnable(boolean enable) {
this.jMenuItemPaste.setEnabled(enable);
}
/**
* 设置剪切是否能用
*/
public void setCutEnable(boolean enable) {
this.jMenuItemCut.setEnabled(enable);
}
public void show(){
}
private void jbInit() throws Exception {
jMenuItemResume.setText("撤销");
jMenuItemCopy.setText("拷贝");
jMenuItemPaste.setText("粘贴");
jMenuItemCut.setText("剪切");
jMenuItemResume.addActionListener(ccp);
jMenuItemCopy.addActionListener(ccp);
jMenuItemCut.addActionListener(ccp);
jMenuItemPaste.addActionListener(ccp);
jPopupMenu.add(jMenuItemResume);
jPopupMenu.addSeparator();
jPopupMenu.add(jMenuItemCut);
jPopupMenu.add(jMenuItemCopy);
jPopupMenu.addSeparator();
jPopupMenu.add(jMenuItemPaste);
this.init();
}
private void init(){
/**
* 因为撤销暂不知道怎么写,把这个enable设置false;
*/
//jMenuItemResume.setEnabled(false);
if (this.undo.canUndo()) {
jMenuItemResume.setEnabled(true);
}else{
jMenuItemResume.setEnabled(false);
}
jMenuItemResume.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.CTRL_MASK));
jMenuItemCopy.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK));
jMenuItemCut.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK));
jMenuItemPaste.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK));
}
public static void main(String[] args) {
CopyCutPaste copycutpaste = new CopyCutPaste(null);
}
public void jMenuItem_actionPerformed(ActionEvent e) {
if (e.getSource().equals(this.jMenuItemResume)) {
if (undo.canUndo()) {
try {
undo.undo();
}
catch (CannotUndoException ex) {
System.out.println("Unable to undo: " + ex);
ex.printStackTrace();
}
if (!undo.canUndo()) {
this.jMenuItemResume.setEnabled(false);
}
}
}
else if (e.getSource().equals(this.jMenuItemCopy)) {
this.jc.copy();
}
else if (e.getSource().equals(this.jMenuItemCut)) {
this.jc.cut();
}
else if (e.getSource().equals(this.jMenuItemPaste)) {
this.jc.paste();
}
}
}
class CopyCutPaste_jMenuItem_actionAdapter
implements ActionListener {
private CopyCutPaste adaptee;
CopyCutPaste_jMenuItem_actionAdapter(CopyCutPaste adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jMenuItem_actionPerformed(e);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -