文本框里的右击菜单 具体有撤销 剪切 复制 粘贴 删除 全选几项,偶的程序里急用,但是不知道该怎么写,哪位高手那里有现成的代码,麻烦共享一下,小女子万分感谢:)
解决方案 »
- 再请教一个超级新手的问题。
- JTable实际占用的width
- 紧急求助,我想先运行5个线程,直到它们结束再运行另外五个线程,怎么实现呢?谢谢啊
- private问题
- 既然抛弃了指针,那为什么还要让==去比较指针的逻辑概念引用? 既想当婊子,还想立牌坊!
- 编写ejb组建类时是否需要一定实现对应该组件的Home接口,初步接触,请多指教
- 哪里有Borland OptimizeIt 5.5 的Crack下载?
- deploytool问题
- (100分)哪里有Visual Cafe和Jbuilder 6下载?不要试用版.清各位大虾帮忙.
- java 处理图片为圆角,而且圆角要透明的,怎么做啊
- 谁有windows编程相关的书要转让,或者换书. 我有《java编程思想》南宁市!!!
- 一个简单的java接口例子,请指点。
密码 19491001里面有
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;import javax.swing.*;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.JTextComponent;
import javax.swing.text.Position;public class TextComponentPopupMenu extends JPopupMenu implements
MouseListener, ActionListener {
private static TextComponentPopupMenu sharedInstance = null; public static void installToComponent(JTextComponent c) {
if (c instanceof JTextField && !(c instanceof JPasswordField)) {
c.addMouseListener(TextComponentPopupMenu.getSharedInstance());
}
} public static void uninstallFromComponent(JTextComponent c) {
if (c instanceof JTextField && !(c instanceof JPasswordField)) {
c.removeMouseListener(getSharedInstance());
}
} JMenuItem cutItem, copyItem, pasteItem, deleteItem, selectAllItem; public TextComponentPopupMenu() {
add(cutItem = new JMenuItem("剪切 (T)"));
add(copyItem = new JMenuItem("复制 (C)"));
add(pasteItem = new JMenuItem("粘贴 (P)"));
add(deleteItem = new JMenuItem("删除 (D)"));
addSeparator();
add(selectAllItem = new JMenuItem("全选 (A)")); cutItem.setMnemonic('T');
copyItem.setMnemonic('C');
pasteItem.setMnemonic('P');
deleteItem.setMnemonic('D');
selectAllItem.setMnemonic('A'); cutItem.addActionListener(this);
copyItem.addActionListener(this);
pasteItem.addActionListener(this);
deleteItem.addActionListener(this);
selectAllItem.addActionListener(this);
} private static TextComponentPopupMenu getSharedInstance() {
if (sharedInstance == null) {
sharedInstance = new TextComponentPopupMenu();
}
return sharedInstance;
} public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger() && e.getSource() instanceof JTextField) {
JTextField textfield = (JTextField) e.getSource();
if (Boolean.TRUE.equals(textfield
.getClientProperty("DisablePopupMenu"))) {
return;
}
textfield.requestFocusInWindow();
show(textfield, e.getX(), e.getY());
}
} public void mouseClicked(MouseEvent e) {
} public void mousePressed(MouseEvent e) {
} public void mouseEntered(MouseEvent e) {
} public void mouseExited(MouseEvent e) {
} public void show(Component invoker, int x, int y) {
JTextComponent tc = (JTextComponent) invoker;
String sel = tc.getSelectedText(); boolean selected = sel != null && !sel.equals("");
boolean enableAndEditable = tc.isEnabled() && tc.isEditable(); cutItem.setEnabled(selected && enableAndEditable);
copyItem.setEnabled(selected && tc.isEnabled());
deleteItem.setEnabled(selected && enableAndEditable);
pasteItem.setEnabled(enableAndEditable);
selectAllItem.setEnabled(tc.isEnabled()); super.show(invoker, x, y);
} public void actionPerformed(ActionEvent e) {
JTextComponent tc = (JTextComponent) getInvoker();
String sel = tc.getSelectedText(); if (e.getSource() == cutItem) {
tc.cut();
} else if (e.getSource() == copyItem) {
tc.copy();
} else if (e.getSource() == pasteItem) {
tc.paste();
} else if (e.getSource() == selectAllItem) {
tc.selectAll();
} else if (e.getSource() == deleteItem) {
Document doc = tc.getDocument();
int start = tc.getSelectionStart();
int end = tc.getSelectionEnd(); try {
Position p0 = doc.createPosition(start);
Position p1 = doc.createPosition(end); if ((p0 != null) && (p1 != null)
&& (p0.getOffset() != p1.getOffset())) {
doc.remove(p0.getOffset(), p1.getOffset() - p0.getOffset());
}
} catch (BadLocationException be) {
}
}
}
public static void main(String[] args) {
JTextField tf = new JTextField(10);
tf.addMouseListener(TextComponentPopupMenu.getSharedInstance()); JFrame f = new JFrame();
f.getContentPane().add(tf, BorderLayout.CENTER);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setLocationRelativeTo(null);
f.show();
}
}