package javaapp;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.util.Hashtable;
import javax.swing.Action;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JTextArea;
import javax.swing.text.DefaultEditorKit;
import static javax.swing.text.DefaultEditorKit.cutAction;
import javax.swing.text.JTextComponent;
import javax.swing.text.TextAction;
/**
*
* @author wind
*/
public class JavaApp extends JFrame {
private JMenuBar menuBar = new JMenuBar();
private JTextArea textArea = new JTextArea("some content");
public JavaApp() {
textArea.setFont(new Font("Dialog", Font.PLAIN, 24));
this.setJMenuBar(createMenu());
this.add(textArea, BorderLayout.CENTER);
setTitle("Test");
setSize(800, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
JavaApp j = new JavaApp();
}
private JMenuBar createMenu() {
JMenuBar menuBar = new JMenuBar();
JMenu editMenu = new JMenu("Edit");
menuBar.add(editMenu);
//editMenu.add(new CutAction("剪切"));//方案一:自定义实现剪切操作
editMenu.add(getAction(DefaultEditorKit.cutAction));//方案二:DefaultEditorKit实现剪切操作。
return menuBar;
}
//方案2辅助函数
private Action getAction(String name) {
Hashtable actionTable = new Hashtable();
Action[] actions = textArea.getActions();
for (int i = 0; i < actions.length; ++i) {
actionTable.put(actions[i].getValue(Action.NAME), actions[i]);
}
return (Action) actionTable.get(name);
}
//方案1辅助类
private class CutAction extends TextAction {
public CutAction(String name) {
super(name);
}
@Override
public void actionPerformed(ActionEvent e) {//当菜单被点击是,调用一下程序执行剪切
JTextComponent target = this.getTextComponent(e);
if (target != null) {
target.cut();
}
}
}
}