- package 文本编辑器;
-
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Font;
- import java.awt.GraphicsEnvironment;
- import java.awt.GridLayout;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.InputEvent;
- import java.awt.event.KeyEvent;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileReader;
- import java.io.FileWriter;
-
- import javax.swing.ButtonGroup;
- import javax.swing.ImageIcon;
- import javax.swing.JButton;
- import javax.swing.JCheckBox;
- import javax.swing.JCheckBoxMenuItem;
- import javax.swing.JColorChooser;
- import javax.swing.JComboBox;
- import javax.swing.JDialog;
- import javax.swing.JFileChooser;
- 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.JPanel;
- import javax.swing.JPopupMenu;
- import javax.swing.JRadioButton;
- import javax.swing.JRadioButtonMenuItem;
- import javax.swing.JScrollPane;
- import javax.swing.JTextArea;
- import javax.swing.JTextField;
- import javax.swing.JToolBar;
- import javax.swing.KeyStroke;
- import javax.swing.WindowConstants;
-
-
- @SuppressWarnings("serial")
- public class TextEditBox extends JFrame {
-
- private JComboBox combox_name, combox_size;
- private JButton button_larger,button_smaller,button_color;
- private JCheckBox checkb_bold, checkb_italic;
- private JPopupMenu popupmenu;
- private JTextArea ta = new JTextArea();
- private JScrollPane sp = new JScrollPane(ta);
-
- private JTextField tf_search;
- private JButton button_next;
-
- private int key=0;
-
- public TextEditBox(String str) {
- super(str);
- this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
- Dimension dim = getToolkit().getScreenSize();
- this.setBounds(dim.width / 4, dim.height / 4, 700, 480);
- JToolBar toolbar = new JToolBar();
- this.add(toolbar, BorderLayout.NORTH);
- this.add(sp);
- ta.setLineWrap(true);
-
- GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
- String[] fontsName = ge.getAvailableFontFamilyNames();
- combox_name = new JComboBox(fontsName);
- toolbar.add(combox_name);
- combox_name.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- String fontname = (String)combox_name.getSelectedItem();
- Font font = ta.getFont();
- int style = font.getStyle();
- int size = font.getSize();
- ta.setFont(new Font(fontname, style, size));
- }
- });
-
- String sizestr[] = { "20", "30", "40", "50", "60", "70" ,"80","90","100"};
- combox_size = new JComboBox(sizestr);
- combox_size.setEditable(true);
- toolbar.add(combox_size);
- combox_size.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- String fontname = (String)combox_name.getSelectedItem();
- int size = Integer.parseInt((String)combox_size.getSelectedItem());
- Font font = ta.getFont();
- int style = font.getStyle();
- ta.setFont(new Font(fontname, style, size));
- }
- });
-
- button_larger=new JButton("A+");
- toolbar.add(button_larger);
- button_larger.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- String fontname = (String)combox_name.getSelectedItem();
- Font font = ta.getFont();
- int style = font.getStyle();
- int size = font.getSize()+5;
- ta.setFont(new Font(fontname, style, size));
- }
- });
- button_smaller=new JButton("A-");
- toolbar.add(button_smaller);
- button_smaller.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- String fontname = (String)combox_name.getSelectedItem();
- Font font = ta.getFont();
- int style = font.getStyle();
- int size = font.getSize()-5;
- ta.setFont(new Font(fontname, style, size));
- }
- });
-
-
- checkb_bold = new JCheckBox("粗体");
- toolbar.add(checkb_bold);
- checkb_bold.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- String fontname = (String)combox_name.getSelectedItem();
- Font font = ta.getFont();
- int style = font.getStyle();
- int size = font.getSize();
- style = style ^ 1;
- ta.setFont(new Font(fontname, style, size));
- }
- });
- checkb_italic = new JCheckBox("斜体");
- toolbar.add(checkb_italic);
- checkb_italic.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- String fontname = (String)combox_name.getSelectedItem();
- Font font = ta.getFont();
- int style = font.getStyle();
- int size = font.getSize();
- style = style ^ 2;
- ta.setFont(new Font(fontname, style, size));
- }
- });
-
- JRadioButton radiob_color[];
- String colorstr[]={"红","绿","蓝"};
- ButtonGroup bgroup_color = new ButtonGroup();
- radiob_color = new JRadioButton[colorstr.length];
- for (int i=0; i<radiob_color.length; i++){
- radiob_color[i]=new JRadioButton(colorstr[i]);
- bgroup_color.add(radiob_color[i]);
- toolbar.add(radiob_color[i]);
- }
- radiob_color[0].addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- ta.setForeground(Color.red);
- }
- });
- radiob_color[1].addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- ta.setForeground(Color.green);
- }
- });
- radiob_color[2].addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- ta.setForeground(Color.blue);
- }
- });
-
- button_color=new JButton("其他");
- toolbar.add(button_color);
- button_color.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- Color color;
- color=JColorChooser.showDialog(TextEditBox.this,"颜色选择", Color.black);
- ta.setForeground(color);
- }
- });
-
- ta.addMouseListener(new MouseAdapter() {
- public void mouseClicked(MouseEvent e) {
- if (e.getModifiers() == MouseEvent.BUTTON3_MASK)
- popupmenu.show(ta, e.getX(), e.getY());
- }
- });
-
- this.addmyMenu();
- this.setVisible(true);
- }
-
- private void addmyMenu() {
- JMenuBar menubar = new JMenuBar();
- this.setJMenuBar(menubar);
- String menustr[] = { "文件", "编辑", "工具", "帮助" };
- JMenu menu[] = new JMenu[menustr.length];
- for (int i = 0; i < menustr.length; i++) {
- menu[i] = new JMenu(menustr[i]);
- menubar.add(menu[i]);
- }
-
- JMenuItem menuitem_open = new JMenuItem("打开");
- menu[0].add(menuitem_open);
- menuitem_open.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- JFileChooser filechooser = new JFileChooser();
- int result = filechooser.showOpenDialog(TextEditBox.this);
- if (result == JFileChooser.APPROVE_OPTION) {
- try {
- File file = filechooser.getSelectedFile();
- FileReader fr = new FileReader(file);
- BufferedReader br = new BufferedReader(fr);
- ta.setText("");
- String text;
- while ((text = br.readLine()) != null) {
- ta.append(text);
- }
- fr.close();
- br.close();
- } catch (Exception ex) {
- JOptionPane.showMessageDialog(TextEditBox.this,"打开文档出错!");
- }
- }
- }
- });
- JMenuItem menuitem_save = new JMenuItem("保存");
- menu[0].add(menuitem_save);
- menuitem_save.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- JFileChooser filechooser = new JFileChooser();
- int result = filechooser.showSaveDialog(TextEditBox.this);
- if (result == JFileChooser.APPROVE_OPTION) {
- try {
- File file = filechooser.getSelectedFile();
- FileWriter fw = new FileWriter(file);
- BufferedWriter bw = new BufferedWriter(fw);
- String text=ta.getText();
- fw.write(text);
- fw.close();
- bw.close();
- } catch (Exception ex) {
- JOptionPane.showMessageDialog(TextEditBox.this,"打开文档出错!");
- }
- }
-
- }
- });
- menu[0].addSeparator();
- JMenuItem menuitem_exit = new JMenuItem("退出");
- menu[0].add(menuitem_exit);
- menuitem_exit.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- System.exit(0);
- }
- });
-
- JMenu menu_style = new JMenu("字形");
- JCheckBoxMenuItem checkboxmenuitem_bold = new JCheckBoxMenuItem("粗体");
- menu_style.add(checkboxmenuitem_bold);
- JCheckBoxMenuItem checkboxmenuitem_italic = new JCheckBoxMenuItem("斜体");
- menu_style.add(checkboxmenuitem_italic);
- menu[1].add(menu_style);
- checkboxmenuitem_bold.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- String fontname = (String)combox_name.getSelectedItem();
- Font font = ta.getFont();
- int style = font.getStyle();
- int size = font.getSize();
- style = style ^ 1;
- ta.setFont(new Font(fontname, style, size));
- }
- });
-
- checkboxmenuitem_italic.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- String fontname = (String)combox_name.getSelectedItem();
- Font font = ta.getFont();
- int style = font.getStyle();
- int size = font.getSize();
- style = style ^ 2;
- ta.setFont(new Font(fontname, style, size));
- }
- });
-
- JMenu menu_color = new JMenu("颜色");
- menu[1].add(menu_color);
- ButtonGroup buttongroup = new ButtonGroup();
- String colorstr[] = { "红", "绿", "蓝" };
- JRadioButtonMenuItem rbmi_color[] = new JRadioButtonMenuItem[colorstr.length];
- for (int i = 0; i < rbmi_color.length; i++) {
- rbmi_color[i] = new JRadioButtonMenuItem(colorstr[i]);
- buttongroup.add(rbmi_color[i]);
- menu_color.add(rbmi_color[i]);
- }
- rbmi_color[0].addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- ta.setForeground(Color.red);
- }
- });
- rbmi_color[1].addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- ta.setForeground(Color.green);
- }
- });
- rbmi_color[2].addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- ta.setForeground(Color.blue);
- }
- });
-
- JMenuItem menuitem_countwordsnum = new JMenuItem("字数统计");
- menu[2].add(menuitem_countwordsnum);
- menuitem_countwordsnum.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- int count=0;
- for(int i=0;i<ta.getText().length();i++){
- if(!ta.getText().substring(i,i+1).equals(" ")){
- count++;
- }
- }
- JOptionPane.showMessageDialog(TextEditBox.this, "文本框中一共有"+count+"个字符!");
- }
- });
- menu[2].addSeparator();
- JMenuItem menuitem_search = new JMenuItem("查找");
- menu[2].add(menuitem_search);
- menuitem_search.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- new MessageJDialog();
-
- button_next.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- String str_search=tf_search.getText();
- int len = str_search.length();
- for (int i = key; i < ta.getText().length() - len + 1; i++) {
- String str_record = ta.getText().substring(i, i + len);
- if (str_record.equals(str_search)) {
- key = i + 1;
- ta.requestFocus();
- ta.select(i, i + len);
- return;
- }
- }
- }
- });
-
- key=0;
- }
- });
- JMenuItem menuitem_replace = new JMenuItem("替换");
- menu[2].add(menuitem_replace);
- menuitem_replace.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- String str_replace=JOptionPane.showInputDialog(TextEditBox.this,
- "请输入你要替换的字符串:" );
- String str_replacelater=JOptionPane.showInputDialog(TextEditBox.this,
- "请输入你要用来替换的内容:" );
- int len=str_replace.length();
- for(int i=0;i<ta.getText().length()-len+1;i++){
- String str_record=ta.getText().substring(i, i+len);
- if(str_record.equals(str_replace)){
- ta.replaceRange(str_replacelater,i, i+len);
- }
- }
- }
- });
-
- JMenuItem menuitem_about = new JMenuItem("关于");
- menu[3].add(menuitem_about);
- menuitem_about.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- JOptionPane.showMessageDialog(TextEditBox.this,"文本编辑器v1.0 开发者:hhtx");
- }
- });
-
- popupmenu = new JPopupMenu();
- String menuitemstr[] = { "剪切", "复制", "粘贴" };
- JMenuItem popmenuitem[] = new JMenuItem[menuitemstr.length];
- for (int i = 0; i < popmenuitem.length; i++) {
- popmenuitem[i] = new JMenuItem(menuitemstr[i]);
- popupmenu.add(popmenuitem[i]);
- }
- popmenuitem[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
- InputEvent.CTRL_MASK));
- popmenuitem[1].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
- InputEvent.CTRL_MASK));
- popmenuitem[2].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
- InputEvent.CTRL_MASK));
-
- popmenuitem[0].addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- ta.cut();
- }
- });
- popmenuitem[1].addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- ta.copy();
- }
- });
- popmenuitem[2].addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- ta.paste();
- }
- });
- ta.add(popupmenu);
- }
-
-
- private class MessageJDialog extends JDialog {
- private JLabel lable_tip;
- private JPanel panel_next = new JPanel();
- private JPanel panel_search = new JPanel();
- private JPanel panel_tip = new JPanel();
-
- public MessageJDialog() {
- super(TextEditBox.this, "查找");
- this.setSize(300, 170);
- this.setLocation(TextEditBox.this.getX() + 200,
- TextEditBox.this.getY() + 200);
- this.setLayout(new GridLayout(3, 1));
-
- ImageIcon imageIcon = new ImageIcon("img/search.png");
- lable_tip = new JLabel("请输入你要查找的字符串:", imageIcon, JLabel.LEFT);
- panel_tip.add(lable_tip);
- this.add(panel_tip);
- tf_search = new JTextField(20);
- panel_search.add(tf_search);
- this.add(panel_search);
- button_next = new JButton("查找下一个");
- panel_next.add(button_next);
- this.add(panel_next);
- this.setVisible(true);
- }
- }
-
- public static void main(String args[]) {
- new TextEditBox("文本编辑器v1.0");
- }
- }
![](https://img-blog.csdn.net/20140511190050093?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTcwMDIwMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20140511190105093?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTcwMDIwMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20140511190132562?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTcwMDIwMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20140511190159390?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTcwMDIwMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20140511190231046?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTcwMDIwMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
转载于:https://www.cnblogs.com/aipan/p/6834855.html