Java中JTextField或JTextArea右键弹出菜单
来源:互联网 发布:误删管家婆数据库 编辑:程序博客网 时间:2024/05/16 07:08
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.IOException;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
public class JPopupTextField extends JTextField implements MouseListener ,ActionListener{
private static final long serialVersionUID = -406608462064697359L;
private JPopupMenu popupMenu=null;
private JMenuItem cutMenu=null,copyMenu=null,pasteMenu=null,selectAllMenu=null;
public JPopupTextField() {
super();
popupMenu=new JPopupMenu();
cutMenu=new JMenuItem("Cut");
copyMenu=new JMenuItem("Copy");
pasteMenu=new JMenuItem("Paste");
selectAllMenu=new JMenuItem("Select All");
cutMenu.setAccelerator(KeyStroke.getKeyStroke('X', InputEvent.CTRL_MASK));
copyMenu.setAccelerator(KeyStroke.getKeyStroke('C', InputEvent.CTRL_MASK));
pasteMenu.setAccelerator(KeyStroke.getKeyStroke('V', InputEvent.CTRL_MASK));
selectAllMenu.setAccelerator(KeyStroke.getKeyStroke('A', InputEvent.CTRL_MASK));
cutMenu.addActionListener(this);
copyMenu.addActionListener(this);
pasteMenu.addActionListener(this);
selectAllMenu.addActionListener(this);
popupMenu.add(cutMenu);
popupMenu.add(copyMenu);
popupMenu.add(pasteMenu);
popupMenu.add(new JSeparator());
popupMenu.add(selectAllMenu);
this.add(popupMenu);
this.addMouseListener(this);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==copyMenu){
this.copy();
}
if(e.getSource()==pasteMenu){
this.paste();
}
if(e.getSource()==cutMenu){
this.cut();
}
if(e.getSource()==selectAllMenu){
this.selectAll();
}
}
public void mousePressed(MouseEvent e) {
popupMenuTrigger(e);
}
public void mouseReleased(MouseEvent e) {
popupMenuTrigger(e);
}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
private void popupMenuTrigger(MouseEvent e){
if(e.isPopupTrigger()){
this.requestFocusInWindow();
cutMenu.setEnabled(isAbleToCopyAndCut());
copyMenu.setEnabled(isAbleToCopyAndCut());
pasteMenu.setEnabled(isAbleToPaste());
selectAllMenu.setEnabled(isAbleToSelectAll());
popupMenu.show(this,e.getX()+3, e.getY()+3);
}
}
private boolean isAbleToSelectAll(){
return !("".equalsIgnoreCase(this.getText())||(null==this.getText()));
}
private boolean isAbleToCopyAndCut(){
return (this.getSelectionStart()!=this.getSelectionEnd());
}
private boolean isAbleToPaste(){
Transferable content = this.getToolkit().getSystemClipboard().getContents(this);
try {
return (content.getTransferData(DataFlavor.stringFlavor) instanceof String);
} catch (UnsupportedFlavorException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
}
- Java中JTextField或JTextArea右键弹出菜单
- Java-GUI-JTextArea/JTextField/JTextPane
- java右键弹出菜单
- MFC中右键弹出菜单
- Java笔记之JTextField JTextArea区别
- JAVA JTextField 和JTextArea的一般方法
- win32中创建右键弹出菜单
- VC中为clistctrl右键弹出菜单
- MFC中如何添右键弹出菜单
- VC中为clistctrl右键弹出菜单
- VC中为clistctrl右键弹出菜单
- JTable中点击鼠标右键弹出菜单
- 重写clistctl中右键弹出菜单
- MFC中如何添右键弹出菜单
- Java实现右键弹出菜单例子
- JTextField与JTextArea
- 获取JTextArea/JTextField值
- JTextField 与JTextArea
- linux文件系统学习
- c++ 纯虚函数
- java的构造器调用
- Micron sensor 驱动与调试小结
- Linux重定向详解
- Java中JTextField或JTextArea右键弹出菜单
- 通过标记处理程序实现标记开发
- Android开发问题集结贴
- Web架构
- VC中的各种数据类型之间的转换
- ARMv7的Cortex系列微处理器技术特点
- 学习计划表格
- Java中final关键字学习笔记
- 判断字符串是什么编码(转)