一个简单的文本编辑器
package UserJFrame; import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.Dimension; import java.awt.FileDialog; import java.awt.Font; import java.awt.GraphicsEnvironment; import java.awt.GridLayout; import java.awt.Label; import java.awt.MenuBar; import java.awt.Panel; import java.awt.TrayIcon.MessageType; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.font.TextLayout; import javax.swing.ButtonGroup; import javax.swing.GroupLayout; import javax.swing.GroupLayout.Group; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.JFrame; 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.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.JToolBar; import javax.swing.LayoutStyle; import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.plaf.basic.BasicBorders.RadioButtonBorder; import javax.swing.text.StyledEditorKit.BoldAction; public class UserJFrame extends JFrame implements ActionListener, MouseListener { private JButton btnAdd; private JTextArea textarea; private JRadioButton btnMan,btnFelman; private JTextField tfdNumber,tfdName; private JComboBox comProvince,comCitys; private int number=1; private Object[][] citys; private JTextField tfd1; private JMenuItem jmenuItemcolor[]=null; private JDialog jdialog1,jdialogsave; private Font font1; private JPopupMenu jpopupmenu; private JPanel jpanel1,jpanel2; private JComboBox combofonename,combofonesize; private JCheckBox checkBold,checkItalic; private JRadioButton radioColor[]; private Font font; public UserJFrame(Object[] province, Object[][] citys) { super("个人信息统计"); this.citys=citys; this.setBounds(200, 200, 650, 400); this.getContentPane().setBackground(Color.lightGray); this.getContentPane().setLayout(new BorderLayout()); this.setDefaultCloseOperation(EXIT_ON_CLOSE); //设置菜单栏 addMymenu();//调用下面声明的菜单栏相关代码 jpanel1=new JPanel();//用来存放工具栏的面板 jpanel2=new JPanel();//用来搞下面的文本区和信息添加区的面板 JToolBar jtoolbar=new JToolBar();//给工具栏开空间 //以下为工具栏的内容,包括字体大小设置,字体设置,字形选择框 //获取系统字体 GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment(); String fonesName[]=ge.getAvailableFontFamilyNames(); combofonename=new JComboBox(fonesName); combofonename.addActionListener(this);//添加字体的监听 jtoolbar.add(combofonename); //字体大小设置 String fonesSize[]={"20","30","40","50","60","70"}; combofonesize=new JComboBox(fonesSize); combofonesize.addActionListener(this); jtoolbar.add(combofonesize); combofonesize.setEditable(true); //字体选择 checkBold=new JCheckBox("粗体"); checkItalic=new JCheckBox("斜体"); jtoolbar.add(checkBold); jtoolbar.add(checkItalic); //颜色选择 String colorStr[]={"红","绿","蓝","黑"}; radioColor=new JRadioButton[colorStr.length]; ButtonGroup group=new ButtonGroup(); for(int i=0;i<colorStr.length;i++){ radioColor[i]=new JRadioButton(colorStr[i]); jtoolbar.add(radioColor[i]); group.add(radioColor[i]); radioColor[i].addActionListener(this); } jpanel1.add(jtoolbar);//工具栏加到jpanel1中 this.getContentPane().add(jpanel1, BorderLayout.NORTH);//设定jpanel1的位置并添加到整个面板中 this.getContentPane().add(jpanel2);//jpanel2添加进去 jpanel2.setLayout(new GridLayout(1, 2));//把界面1分2,左边为文本框眼,右边为信息添加部分栏 textarea=new JTextArea(); //textarea.setEditable(false); //如果有这条代码,则文本框不可编辑 jpanel2.add(new JScrollPane(textarea)); JPanel jpanel=new JPanel(new GridLayout(7, 1)); jpanel2.add(jpanel); //把各种元素加进右边面板 tfdNumber=new JTextField("1"); tfdNumber.setEditable(false); jpanel.add(tfdNumber); tfdName=new JTextField("姓名:"); jpanel.add(tfdName); JPanel jpanelrd=new JPanel(new GridLayout(1,2)); btnMan=new JRadioButton("男",true); btnFelman=new JRadioButton("女"); jpanelrd.add(btnMan); jpanelrd.add(btnFelman); jpanel.add(jpanelrd); ButtonGroup btngroup=new ButtonGroup();// 使其中的按键(男,女)互斥,只能选择一个,所以把他们放在同一个按键组里 btngroup.add(btnMan); btngroup.add(btnFelman); //省份组合框 comProvince=new JComboBox(province); comProvince.addActionListener(this); jpanel.add(comProvince); comCitys=new JComboBox(citys[0]); jpanel.add(comCitys); tfd1=new JTextField("备注:"); jpanel.add(tfd1); btnAdd=new JButton("添加"); btnAdd.addActionListener(this); jpanel.add(btnAdd); //添加鼠标右键快捷菜单 jpopupmenu=new JPopupMenu(); String popumenuItem[]={"粘贴","复制","剪切"}; JMenuItem popumenuItemadd[]=new JMenuItem[popumenuItem.length]; for(int i=0;i<popumenuItem.length;i++){ popumenuItemadd[i]=new JMenuItem(popumenuItem[i]); jpopupmenu.add(popumenuItemadd[i]); popumenuItemadd[i].addActionListener(this); } textarea.add(jpopupmenu); textarea.addMouseListener(this); this.setVisible(true); } private void addMymenu() { JMenuBar jmenubar=new JMenuBar(); setJMenuBar(jmenubar); String menustr[]={"文件","编辑","帮助"}; JMenu menu[]=new JMenu[menustr.length]; for(int i=0;i<menustr.length;i++){ menu[i]=new JMenu(menustr[i]); jmenubar.add(menu[i]); } //"文件"菜单的子菜单 JMenuItem open=new JMenuItem("打开"); open.setActionCommand("open"); open.addActionListener(this); menu[0].add(open); JMenuItem save=new JMenuItem("保存"); menu[0].add(save); menu[0].addSeparator(); JMenuItem past=new JMenuItem("粘贴"); past.addActionListener(this); menu[0].add(past); JMenuItem copy=new JMenuItem("复制"); copy.addActionListener(this); menu[0].add(copy); JMenuItem cut=new JMenuItem("剪切"); cut.addActionListener(this); menu[0].add(cut); menu[0].addSeparator(); JMenuItem exit=new JMenuItem("退出"); exit.setActionCommand("exit"); exit.addActionListener(this); menu[0].add(exit); //"编辑 "菜单的子菜单 JMenu wordstyle=new JMenu("字形"); menu[1].add(wordstyle); JMenu colorstyle=new JMenu("颜色设置"); menu[1].add(colorstyle); //设置“字形的二级菜单” String wordstyle1[]={"粗体","斜体"}; JMenuItem jmenuitem[]=new JMenuItem[wordstyle1.length]; for(int i=0;i<wordstyle1.length;i++){ jmenuitem[i]=new JMenuItem(wordstyle1[i]); wordstyle.add(jmenuitem[i]); jmenuitem[i].addActionListener(this); } //设置“颜色设置”二级菜单 String colorstyle1[]={"红","绿","蓝","黑"}; jmenuItemcolor=new JMenuItem[colorstyle1.length]; for(int i=0;i<colorstyle1.length;i++){ jmenuItemcolor[i]=new JMenuItem(colorstyle1[i]); colorstyle.add(jmenuItemcolor[i]); jmenuItemcolor[i].addActionListener(this); } JMenuItem jmenuitemhelp=new JMenuItem("相关帮助咨询"); jmenuitemhelp.addActionListener(this); menu[2].add(jmenuitemhelp); } @Override public void actionPerformed(ActionEvent e) { if(e.getSource()==btnAdd){ String aline; //添加名字和编号 aline=this.number+","+tfdName.getText(); //添加性别 if(btnMan.isSelected()){ aline=aline+","+btnMan.getText(); } if(btnFelman.isSelected()){ aline=aline+","+btnFelman.getText(); } //添加省份 aline=aline+","+comProvince.getSelectedItem(); //添加市级 aline=aline+","+comCitys.getSelectedItem(); //添加备注 aline=aline+","+tfd1.getText(); tfd1.setText("备注:"); textarea.append(aline+"\n"); this.number++; tfdNumber.setText(""+this.number); tfdName.setText("姓名:"); } else if(e.getSource()==comProvince){ int i=comProvince.getSelectedIndex(); comCitys.removeAllItems(); System.out.println(citys[i].length); for(int j=0;j<citys[i].length;j++){ comCitys.addItem(citys[i][j]); } } else if(e.getSource() instanceof JMenuItem||e.getSource() instanceof JRadioButton){ //设置颜色的监听 Color color=null; //用传参的思维做颜色 if(e.getActionCommand().equals("红")){ color=new Color(255,0,0); } if(e.getActionCommand().equals("绿")){ color=new Color(0,255,0); } if(e.getActionCommand().equals("蓝")){ color=new Color(0,0,255); } if(e.getActionCommand().equals("黑")){ color=new Color(0,0,0); } textarea.setForeground(color); //设置帮助的监听 if(e.getActionCommand().equalsIgnoreCase("相关帮助咨询")){ jdialog1=new JDialog(this,true); jdialog1.setSize(330, 100); int lx=getX()+20; int ly=getY()+20; jdialog1.setLocation(lx, ly); jdialog1.add(new Label("相关帮助请咨询电话10010,最终解释权归联通公司所有!")); jdialog1.setVisible(true); } //设置字形的监听 if(e.getActionCommand().equals("粗体")){ font1=new Font(getName(),20, 20); textarea.setFont(font1); } if(e.getActionCommand().equals("斜体")){ } //退出的监听 if(e.getActionCommand().equalsIgnoreCase("exit")){ int option=JOptionPane.showConfirmDialog(this, "你确定保存并退出么?"); if(option==JOptionPane.OK_OPTION){ System.out.println("保存中..."); System.exit(0); } if(option==JOptionPane.NO_OPTION){ System.exit(0); } if(option==JOptionPane.CANCEL_OPTION){ return; } } //保存的监听 if(e.getActionCommand().equalsIgnoreCase("复制")){ textarea.copy(); } //粘贴监听 if(e.getActionCommand().equalsIgnoreCase("粘贴")){ textarea.paste(); } //剪切监听 if(e.getActionCommand().equalsIgnoreCase("剪切")){ textarea.cut(); } //打开的监听 if(e.getActionCommand().equals("open")){ openFile(); } } //字形的监听 /*if(e.getSource() instanceof JComboBox ){ String fontName=(String) combofonename.getSelectedItem(); int fontSize=0; String strSize=(String) combofonesize.getSelectedItem(); int style = changeStyle(e); font=new Font(fontName, style, fontSize); textarea.setFont(font); } } private int changeStyle(ActionEvent e) { // TODO Auto-generated method stub return 0;*/ } private void openFile() { FileDialog openFileDlg = new FileDialog(this, "打开文件", FileDialog.LOAD); openFileDlg.setVisible(true); } @Override public void mouseClicked(MouseEvent e) { if(e.getModifiers()==MouseEvent.BUTTON3_MASK){ jpopupmenu.show(textarea,e.getX(), e.getY()); } } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public static void main(String[] args) { Object province[]={"四川省","湖南省","江苏省"}; Object citys[][]={{"成都市","遂宁市","南充市","德阳市","绵阳市"}, {"益阳市","长沙市","株洲市","湘潭市","岳阳市"}, {"南京市","苏州市","无锡市"} }; new UserJFrame(province,citys); } }
https://blog.csdn.net/asd529735325
package UserJFrame; import java.awt.BorderLayout;import java.awt.Button;import java.awt.Color;import java.awt.Dimension;import java.awt.FileDialog;import java.awt.Font;import java.awt.GraphicsEnvironment;import java.awt.GridLayout;import java.awt.Label;import java.awt.MenuBar;import java.awt.Panel;import java.awt.TrayIcon.MessageType;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.font.TextLayout; import javax.swing.ButtonGroup;import javax.swing.GroupLayout;import javax.swing.GroupLayout.Group;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JComboBox;import javax.swing.JDialog;import javax.swing.JFileChooser;import javax.swing.JFrame;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.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.JToolBar;import javax.swing.LayoutStyle;import javax.swing.filechooser.FileNameExtensionFilter;import javax.swing.plaf.basic.BasicBorders.RadioButtonBorder;import javax.swing.text.StyledEditorKit.BoldAction; public class UserJFrame extends JFrame implements ActionListener, MouseListener {private JButton btnAdd;private JTextArea textarea;private JRadioButton btnMan,btnFelman;private JTextField tfdNumber,tfdName;private JComboBox comProvince,comCitys;private int number=1;private Object[][] citys;private JTextField tfd1;private JMenuItem jmenuItemcolor[]=null;private JDialog jdialog1,jdialogsave;private Font font1;private JPopupMenu jpopupmenu;private JPanel jpanel1,jpanel2;private JComboBox combofonename,combofonesize;private JCheckBox checkBold,checkItalic;private JRadioButton radioColor[];private Font font;public UserJFrame(Object[] province, Object[][] citys) {super("个人信息统计");this.citys=citys;this.setBounds(200, 200, 650, 400);this.getContentPane().setBackground(Color.lightGray);this.getContentPane().setLayout(new BorderLayout());this.setDefaultCloseOperation(EXIT_ON_CLOSE);//设置菜单栏addMymenu();//调用下面声明的菜单栏相关代码jpanel1=new JPanel();//用来存放工具栏的面板jpanel2=new JPanel();//用来搞下面的文本区和信息添加区的面板JToolBar jtoolbar=new JToolBar();//给工具栏开空间//以下为工具栏的内容,包括字体大小设置,字体设置,字形选择框//获取系统字体GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();String fonesName[]=ge.getAvailableFontFamilyNames();combofonename=new JComboBox(fonesName);combofonename.addActionListener(this);//添加字体的监听jtoolbar.add(combofonename);//字体大小设置String fonesSize[]={"20","30","40","50","60","70"};combofonesize=new JComboBox(fonesSize);combofonesize.addActionListener(this);jtoolbar.add(combofonesize);combofonesize.setEditable(true);//字体选择checkBold=new JCheckBox("粗体");checkItalic=new JCheckBox("斜体");jtoolbar.add(checkBold);jtoolbar.add(checkItalic);//颜色选择String colorStr[]={"红","绿","蓝","黑"};radioColor=new JRadioButton[colorStr.length];ButtonGroup group=new ButtonGroup();for(int i=0;i<colorStr.length;i++){radioColor[i]=new JRadioButton(colorStr[i]);jtoolbar.add(radioColor[i]);group.add(radioColor[i]);radioColor[i].addActionListener(this);}jpanel1.add(jtoolbar);//工具栏加到jpanel1中this.getContentPane().add(jpanel1, BorderLayout.NORTH);//设定jpanel1的位置并添加到整个面板中this.getContentPane().add(jpanel2);//jpanel2添加进去jpanel2.setLayout(new GridLayout(1, 2));//把界面1分2,左边为文本框眼,右边为信息添加部分栏textarea=new JTextArea();//textarea.setEditable(false); //如果有这条代码,则文本框不可编辑jpanel2.add(new JScrollPane(textarea));JPanel jpanel=new JPanel(new GridLayout(7, 1));jpanel2.add(jpanel);//把各种元素加进右边面板tfdNumber=new JTextField("1");tfdNumber.setEditable(false);jpanel.add(tfdNumber);tfdName=new JTextField("姓名:");jpanel.add(tfdName);JPanel jpanelrd=new JPanel(new GridLayout(1,2));btnMan=new JRadioButton("男",true);btnFelman=new JRadioButton("女");jpanelrd.add(btnMan);jpanelrd.add(btnFelman);jpanel.add(jpanelrd);ButtonGroup btngroup=new ButtonGroup();// 使其中的按键(男,女)互斥,只能选择一个,所以把他们放在同一个按键组里btngroup.add(btnMan);btngroup.add(btnFelman);//省份组合框comProvince=new JComboBox(province);comProvince.addActionListener(this);jpanel.add(comProvince);comCitys=new JComboBox(citys[0]);jpanel.add(comCitys);tfd1=new JTextField("备注:");jpanel.add(tfd1);btnAdd=new JButton("添加");btnAdd.addActionListener(this);jpanel.add(btnAdd);//添加鼠标右键快捷菜单jpopupmenu=new JPopupMenu();String popumenuItem[]={"粘贴","复制","剪切"};JMenuItem popumenuItemadd[]=new JMenuItem[popumenuItem.length];for(int i=0;i<popumenuItem.length;i++){popumenuItemadd[i]=new JMenuItem(popumenuItem[i]);jpopupmenu.add(popumenuItemadd[i]);popumenuItemadd[i].addActionListener(this);}textarea.add(jpopupmenu);textarea.addMouseListener(this);this.setVisible(true);}private void addMymenu() {JMenuBar jmenubar=new JMenuBar();setJMenuBar(jmenubar);String menustr[]={"文件","编辑","帮助"};JMenu menu[]=new JMenu[menustr.length];for(int i=0;i<menustr.length;i++){menu[i]=new JMenu(menustr[i]);jmenubar.add(menu[i]);}//"文件"菜单的子菜单JMenuItem open=new JMenuItem("打开");open.setActionCommand("open");open.addActionListener(this);menu[0].add(open);JMenuItem save=new JMenuItem("保存");menu[0].add(save);menu[0].addSeparator();JMenuItem past=new JMenuItem("粘贴");past.addActionListener(this);menu[0].add(past);JMenuItem copy=new JMenuItem("复制");copy.addActionListener(this);menu[0].add(copy);JMenuItem cut=new JMenuItem("剪切");cut.addActionListener(this);menu[0].add(cut);menu[0].addSeparator();JMenuItem exit=new JMenuItem("退出");exit.setActionCommand("exit");exit.addActionListener(this);menu[0].add(exit);//"编辑 "菜单的子菜单JMenu wordstyle=new JMenu("字形");menu[1].add(wordstyle);JMenu colorstyle=new JMenu("颜色设置");menu[1].add(colorstyle);//设置“字形的二级菜单”String wordstyle1[]={"粗体","斜体"};JMenuItem jmenuitem[]=new JMenuItem[wordstyle1.length];for(int i=0;i<wordstyle1.length;i++){jmenuitem[i]=new JMenuItem(wordstyle1[i]);wordstyle.add(jmenuitem[i]);jmenuitem[i].addActionListener(this);}//设置“颜色设置”二级菜单String colorstyle1[]={"红","绿","蓝","黑"};jmenuItemcolor=new JMenuItem[colorstyle1.length];for(int i=0;i<colorstyle1.length;i++){jmenuItemcolor[i]=new JMenuItem(colorstyle1[i]);colorstyle.add(jmenuItemcolor[i]);jmenuItemcolor[i].addActionListener(this);}JMenuItem jmenuitemhelp=new JMenuItem("相关帮助咨询");jmenuitemhelp.addActionListener(this);menu[2].add(jmenuitemhelp); }@Overridepublic void actionPerformed(ActionEvent e) {if(e.getSource()==btnAdd){String aline;//添加名字和编号aline=this.number+","+tfdName.getText();//添加性别if(btnMan.isSelected()){aline=aline+","+btnMan.getText();}if(btnFelman.isSelected()){aline=aline+","+btnFelman.getText();}//添加省份aline=aline+","+comProvince.getSelectedItem();//添加市级aline=aline+","+comCitys.getSelectedItem();//添加备注aline=aline+","+tfd1.getText();tfd1.setText("备注:");textarea.append(aline+"\n");this.number++;tfdNumber.setText(""+this.number);tfdName.setText("姓名:");}else if(e.getSource()==comProvince){int i=comProvince.getSelectedIndex();comCitys.removeAllItems();System.out.println(citys[i].length);for(int j=0;j<citys[i].length;j++){comCitys.addItem(citys[i][j]);}}else if(e.getSource() instanceof JMenuItem||e.getSource() instanceof JRadioButton){//设置颜色的监听Color color=null; //用传参的思维做颜色if(e.getActionCommand().equals("红")){color=new Color(255,0,0);}if(e.getActionCommand().equals("绿")){color=new Color(0,255,0);}if(e.getActionCommand().equals("蓝")){color=new Color(0,0,255);}if(e.getActionCommand().equals("黑")){color=new Color(0,0,0);}textarea.setForeground(color);//设置帮助的监听if(e.getActionCommand().equalsIgnoreCase("相关帮助咨询")){jdialog1=new JDialog(this,true);jdialog1.setSize(330, 100);int lx=getX()+20;int ly=getY()+20;jdialog1.setLocation(lx, ly);jdialog1.add(new Label("相关帮助请咨询电话10010,最终解释权归联通公司所有!"));jdialog1.setVisible(true);}//设置字形的监听if(e.getActionCommand().equals("粗体")){font1=new Font(getName(),20, 20);textarea.setFont(font1);}if(e.getActionCommand().equals("斜体")){}//退出的监听if(e.getActionCommand().equalsIgnoreCase("exit")){int option=JOptionPane.showConfirmDialog(this, "你确定保存并退出么?");if(option==JOptionPane.OK_OPTION){System.out.println("保存中...");System.exit(0);}if(option==JOptionPane.NO_OPTION){System.exit(0);}if(option==JOptionPane.CANCEL_OPTION){return;}}//保存的监听if(e.getActionCommand().equalsIgnoreCase("复制")){textarea.copy();}//粘贴监听if(e.getActionCommand().equalsIgnoreCase("粘贴")){textarea.paste();}//剪切监听if(e.getActionCommand().equalsIgnoreCase("剪切")){textarea.cut();}//打开的监听if(e.getActionCommand().equals("open")){openFile();}}//字形的监听/*if(e.getSource() instanceof JComboBox ){String fontName=(String) combofonename.getSelectedItem();int fontSize=0;String strSize=(String) combofonesize.getSelectedItem();int style = changeStyle(e);font=new Font(fontName, style, fontSize);textarea.setFont(font);}}private int changeStyle(ActionEvent e) {// TODO Auto-generated method stubreturn 0;*/}private void openFile() {FileDialog openFileDlg = new FileDialog(this, "打开文件", FileDialog.LOAD); openFileDlg.setVisible(true);}@Overridepublic void mouseClicked(MouseEvent e) {if(e.getModifiers()==MouseEvent.BUTTON3_MASK){jpopupmenu.show(textarea,e.getX(), e.getY());}}public void mousePressed(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public static void main(String[] args) {Object province[]={"四川省","湖南省","江苏省"};Object citys[][]={{"成都市","遂宁市","南充市","德阳市","绵阳市"}, {"益阳市","长沙市","株洲市","湘潭市","岳阳市"}, {"南京市","苏州市","无锡市"}};new UserJFrame(province,citys);}}<img src="https://img-blog.csdn.net/20160306201345897?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />--------------------- 作者:0世界和平0 来源:CSDN 原文:https://blog.csdn.net/asd529735325/article/details/50815019 版权声明:本文为博主原创文章,转载请附上博文链接!