java功能:全选,删除,复制,粘贴,查找,替换,全替换,撤消,重做,设置字体颜色..
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.event.UndoableEditEvent;
import javax.swing.event.UndoableEditListener;
import javax.swing.undo.CannotRedoException;
import javax.swing.undo.CannotUndoException;
import javax.swing.undo.UndoManager;
public class TestArea implements ActionListener {
private JTextArea jta = new JTextArea(10, 10);
private UndoManager udo = new UndoManager();
private JOptionPane jop = new JOptionPane();
private JFrame sf = new JFrame("设置");
private JFrame ff = new JFrame("查找");
private JTextField tf = new JTextField(15);
private JTextField tf2 = new JTextField(15);
// private String copystring ;
public TestArea() {
// udo.addEdit(jta) ;
jta.getDocument().addUndoableEditListener(new UndoableEditListener() {
public void undoableEditHappened(UndoableEditEvent e) {
udo.addEdit(e.getEdit());
}
});
JFrame jf = new JFrame("记事本");
String[] jmtext = { "文件(F)", "编辑(E)", "其他(O)" };
String[][] jmitext = {
{ "新建(N)", "保存(S)", "打开(O)", "退出(X)" },
{ "全选(A)", "复制(C)", "剪切(X)", "粘贴(P)", "删除(D)", "查找(F)",
"撤消(U)", "重做(R)" }, { "设置(S)", "关于(A)" } };
JMenuBar jmb = new JMenuBar();
JMenu jm[] = new JMenu[jmtext.length];
for (int i = 0; i < jmtext.length; i++) {
jm[i] = new JMenu(jmtext[i]);
JMenuItem[] jms = new JMenuItem[jmitext[i].length];
String s1 = jm[i].getText();
if (s1.indexOf('(') != -1) {
char k1 = s1.charAt(s1.indexOf("(") + 1);
jm[i].setMnemonic(k1);
}
for (int j = 0; j < jmitext[i].length; j++) {
jms[j] = new JMenuItem(jmitext[i][j]);
jm[i].add(jms[j]);
jms[j].addActionListener(this);
String s2 = jms[j].getText();
if (s2.indexOf('(') != -1) {
char k2 = s2.charAt(s2.indexOf("(") + 1);
jms[j].setMnemonic(k2);
}
}
jmb.add(jm[i]);
}
JLabel jl = new JLabel("颜色");
ButtonGroup group = new ButtonGroup();
final JRadioButton rb1 = new JRadioButton("黑", true);
JRadioButton rb2 = new JRadioButton("蓝");
JButton jb1 = new JButton("确定");
jb1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (rb1.isSelected())
jta.setForeground(Color.BLACK);
else
jta.setForeground(Color.BLUE);
sf.setVisible(false);
}
});
group.add(rb1);
group.add(rb2);
sf.setLayout(new FlowLayout());
sf.add(jl);
sf.add(rb1);
sf.add(rb2);
sf.add(jb1);
ff.setSize(200, 150);
ff.setLocation(200, 200);
JButton jb3 = new JButton("查找");
JButton jb4 = new JButton("下一个");
JButton jb5 = new JButton("替换");
JButton jb6 = new JButton("全替换");
// tf.setSize(200,50) ;
jb3.addActionListener(al);
jb4.addActionListener(al);
jb5.addActionListener(al);
jb6.addActionListener(al);
ff.setLayout(new FlowLayout());
ff.add(tf);
ff.add(jb3);
ff.add(jb4);
ff.add(tf2);
ff.add(jb5);
ff.add(jb6);
jm[0].insertSeparator(3);
jm[1].insertSeparator(1);
jm[1].insertSeparator(4);
jm[1].insertSeparator(8);
sf.setLocation(200, 100);
sf.setSize(200, 200);
jf.setJMenuBar(jmb);
jta.setDragEnabled(true);
jf.add(new JScrollPane(jta));
jf.setLocation(200, 100);
jf.setSize(240, 300);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private ActionListener al = new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!"".equals(tf.getText())) {
String s = jta.getText();
int a = -1;
if ("查找".equals(e.getActionCommand())) {
a = s.indexOf(tf.getText());
} else if ("下一个".equals(e.getActionCommand())) {
a = s.indexOf(tf.getText(), jta.getSelectionEnd());
} else if ("替换".equals(e.getActionCommand())) {
jta.replaceSelection(tf2.getText());
} else if ("全替换".equals(e.getActionCommand())) {
jta.setText(jta.getText().replaceAll(tf.getText(),
tf2.getText()));
}
if (a != -1) {
jta.requestFocus();
jta.select(a, a + tf.getText().length());
}
}
}
};
public static void main(String[] args) {
new TestArea();
}
public void actionPerformed(ActionEvent e) {
String s = e.getActionCommand().split("[(]")[0];
if ("退出".equals(s)) {
System.exit(1);
} else if ("全选".equals(s)) {
jta.selectAll();
} else if ("复制".equals(s)) {
jta.copy();
} else if ("粘贴".equals(s)) {
jta.paste();
} else if ("剪切".equals(s)) {
jta.cut();
} else if ("删除".equals(s)) {
jta.replaceRange(null, jta.getSelectionStart(), jta
.getSelectionEnd());
} else if ("撤消".equals(s)) {
try {
// if (udo.canUndo())
udo.undo();
} catch (CannotUndoException ee) {
JOptionPane.showMessageDialog(jop, "无法撤消 !");
}
} else if ("重做".equals(s)) {
try {
// if (udo.canRedo())
udo.redo();
} catch (CannotRedoException ee) {
JOptionPane.showMessageDialog(jop, "无法重做 !");
}
} else if ("查找".equals(s)) {
ff.setVisible(true);
} else if ("设置".equals(s)) {
sf.setVisible(true);
} else if ("关于".equals(s)) {
JOptionPane.showMessageDialog(jop, "记事本 V1.0 Kdash版");
}
}
}
import java.awt.FlowLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.event.UndoableEditEvent;
import javax.swing.event.UndoableEditListener;
import javax.swing.undo.CannotRedoException;
import javax.swing.undo.CannotUndoException;
import javax.swing.undo.UndoManager;
public class TestArea implements ActionListener {
private JTextArea jta = new JTextArea(10, 10);
private UndoManager udo = new UndoManager();
private JOptionPane jop = new JOptionPane();
private JFrame sf = new JFrame("设置");
private JFrame ff = new JFrame("查找");
private JTextField tf = new JTextField(15);
private JTextField tf2 = new JTextField(15);
// private String copystring ;
public TestArea() {
// udo.addEdit(jta) ;
jta.getDocument().addUndoableEditListener(new UndoableEditListener() {
public void undoableEditHappened(UndoableEditEvent e) {
udo.addEdit(e.getEdit());
}
});
JFrame jf = new JFrame("记事本");
String[] jmtext = { "文件(F)", "编辑(E)", "其他(O)" };
String[][] jmitext = {
{ "新建(N)", "保存(S)", "打开(O)", "退出(X)" },
{ "全选(A)", "复制(C)", "剪切(X)", "粘贴(P)", "删除(D)", "查找(F)",
"撤消(U)", "重做(R)" }, { "设置(S)", "关于(A)" } };
JMenuBar jmb = new JMenuBar();
JMenu jm[] = new JMenu[jmtext.length];
for (int i = 0; i < jmtext.length; i++) {
jm[i] = new JMenu(jmtext[i]);
JMenuItem[] jms = new JMenuItem[jmitext[i].length];
String s1 = jm[i].getText();
if (s1.indexOf('(') != -1) {
char k1 = s1.charAt(s1.indexOf("(") + 1);
jm[i].setMnemonic(k1);
}
for (int j = 0; j < jmitext[i].length; j++) {
jms[j] = new JMenuItem(jmitext[i][j]);
jm[i].add(jms[j]);
jms[j].addActionListener(this);
String s2 = jms[j].getText();
if (s2.indexOf('(') != -1) {
char k2 = s2.charAt(s2.indexOf("(") + 1);
jms[j].setMnemonic(k2);
}
}
jmb.add(jm[i]);
}
JLabel jl = new JLabel("颜色");
ButtonGroup group = new ButtonGroup();
final JRadioButton rb1 = new JRadioButton("黑", true);
JRadioButton rb2 = new JRadioButton("蓝");
JButton jb1 = new JButton("确定");
jb1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (rb1.isSelected())
jta.setForeground(Color.BLACK);
else
jta.setForeground(Color.BLUE);
sf.setVisible(false);
}
});
group.add(rb1);
group.add(rb2);
sf.setLayout(new FlowLayout());
sf.add(jl);
sf.add(rb1);
sf.add(rb2);
sf.add(jb1);
ff.setSize(200, 150);
ff.setLocation(200, 200);
JButton jb3 = new JButton("查找");
JButton jb4 = new JButton("下一个");
JButton jb5 = new JButton("替换");
JButton jb6 = new JButton("全替换");
// tf.setSize(200,50) ;
jb3.addActionListener(al);
jb4.addActionListener(al);
jb5.addActionListener(al);
jb6.addActionListener(al);
ff.setLayout(new FlowLayout());
ff.add(tf);
ff.add(jb3);
ff.add(jb4);
ff.add(tf2);
ff.add(jb5);
ff.add(jb6);
jm[0].insertSeparator(3);
jm[1].insertSeparator(1);
jm[1].insertSeparator(4);
jm[1].insertSeparator(8);
sf.setLocation(200, 100);
sf.setSize(200, 200);
jf.setJMenuBar(jmb);
jta.setDragEnabled(true);
jf.add(new JScrollPane(jta));
jf.setLocation(200, 100);
jf.setSize(240, 300);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private ActionListener al = new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!"".equals(tf.getText())) {
String s = jta.getText();
int a = -1;
if ("查找".equals(e.getActionCommand())) {
a = s.indexOf(tf.getText());
} else if ("下一个".equals(e.getActionCommand())) {
a = s.indexOf(tf.getText(), jta.getSelectionEnd());
} else if ("替换".equals(e.getActionCommand())) {
jta.replaceSelection(tf2.getText());
} else if ("全替换".equals(e.getActionCommand())) {
jta.setText(jta.getText().replaceAll(tf.getText(),
tf2.getText()));
}
if (a != -1) {
jta.requestFocus();
jta.select(a, a + tf.getText().length());
}
}
}
};
public static void main(String[] args) {
new TestArea();
}
public void actionPerformed(ActionEvent e) {
String s = e.getActionCommand().split("[(]")[0];
if ("退出".equals(s)) {
System.exit(1);
} else if ("全选".equals(s)) {
jta.selectAll();
} else if ("复制".equals(s)) {
jta.copy();
} else if ("粘贴".equals(s)) {
jta.paste();
} else if ("剪切".equals(s)) {
jta.cut();
} else if ("删除".equals(s)) {
jta.replaceRange(null, jta.getSelectionStart(), jta
.getSelectionEnd());
} else if ("撤消".equals(s)) {
try {
// if (udo.canUndo())
udo.undo();
} catch (CannotUndoException ee) {
JOptionPane.showMessageDialog(jop, "无法撤消 !");
}
} else if ("重做".equals(s)) {
try {
// if (udo.canRedo())
udo.redo();
} catch (CannotRedoException ee) {
JOptionPane.showMessageDialog(jop, "无法重做 !");
}
} else if ("查找".equals(s)) {
ff.setVisible(true);
} else if ("设置".equals(s)) {
sf.setVisible(true);
} else if ("关于".equals(s)) {
JOptionPane.showMessageDialog(jop, "记事本 V1.0 Kdash版");
}
}
}