EditorJFrame
2015-07-02 18:01
344 查看
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.GraphicsEnvironment; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.ButtonGroup; import javax.swing.JCheckBox; import javax.swing.JCheckBoxMenuItem; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPopupMenu; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JToolBar; import javax.swing.KeyStroke; import com.sun.corba.se.spi.orbutil.fsm.Input; public class EditorJFrame extends JFrame implements MouseListener, ActionListener { private static final long serialVersionUID = 1L; JComboBox combobox_name ,combobox_color; JTextArea text; JRadioButton[] menuit; Color[] colors = {Color.red,Color.green,Color.blue}; JCheckBox checkbox_bold,checkbox_italic; JRadioButton[] radios; JCheckBoxMenuItem cbmenuitem; JPopupMenu popupmenu; Color color; public EditorJFrame() { super("文本编辑器"); Dimension dim = this.getToolkit().getScreenSize(); this.setBounds(dim.width/4, dim.height/4, dim.width/2, dim.height/2); setDefaultCloseOperation(EXIT_ON_CLOSE); { JToolBar toolbar = new JToolBar(); getContentPane().add(toolbar,BorderLayout.NORTH); GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); String fontsName[] = ge.getAvailableFontFamilyNames(); combobox_name = new JComboBox(fontsName); combobox_name.addActionListener(this); toolbar.add(combobox_name); String[] fonts_color = {"20","30","40","50","60","70"}; combobox_color = new JComboBox(fonts_color); combobox_color.addActionListener(this); toolbar.add(combobox_color); combobox_color.setEditable(true); String[] stylestr = {"粗体","斜体"}; checkbox_bold = new JCheckBox(stylestr[0]); checkbox_italic = new JCheckBox(stylestr[1]); checkbox_bold.addActionListener(this); checkbox_italic.addActionListener(this); toolbar.add(checkbox_bold); toolbar.add(checkbox_italic); ButtonGroup bugroup = new ButtonGroup(); String[] colorstr = {"red","green","blue"}; radios = new JRadioButton[colorstr.length]; for (int i = 0; i < colorstr.length; i++) { radios[i] = new JRadioButton(colorstr[i]); radios[i].addActionListener(this); bugroup.add(radios[i]); toolbar.add(radios[i]); } } { text = new JTextArea("Welcome-------中文来了"); text.setForeground(color=colors[0]); this.getContentPane().add(new JScrollPane(text)); text.addMouseListener(this); } MyMenu(); setVisible(true); } public void MyMenu(){ JMenuBar menubar = new JMenuBar(); setJMenuBar(menubar); String[] menustr = {"文件","编辑","插入","格式","工具","窗口","帮助"}; String[][] menuitemstr = { {"新建","打开","保存","另存为","|","退出"}, {"撤销","恢复","|","剪切","复制","粘贴","|","查找","替换"}, {"日期","文本"}, {"字体"}, {"字数统计","自动更改","拼写检查"}, {}, {} }; JMenu[] menus = new JMenu[menustr.length]; JMenuItem[][] menuitems = new JMenuItem[menuitemstr.length][]; for (int i = 0; i < menuitems.length; i++) { menus[i] = new JMenu(menustr[i]); menubar.add(menus[i]); menuitems[i] = new JMenuItem[menuitemstr[i].length]; for (int j = 0; j < menuitems[i].length; j++) { if(menuitemstr[i][j]=="|"){ menus[i].addSeparator(); }else{ menuitems[i][j] = new JMenuItem(menuitemstr[i][j]); menus[i].add(menuitems[i][j]); menuitems[i][j].addActionListener(this); } } } { JMenu menu_str = new JMenu("字形"); menus[3].add(menu_str); String[] stylestr = {"粗体","斜体"}; cbmenuitem = new JCheckBoxMenuItem(); for (int i = 0; i < stylestr.length; i++) { cbmenuitem = new JCheckBoxMenuItem(stylestr[i]); menu_str.add(cbmenuitem); } } { JMenu menu_color = new JMenu("颜色"); menus[3].add(menu_color); String[] colorstr = {"red","green","blue"}; ButtonGroup buttongroop = new ButtonGroup(); menuit = new JRadioButton[colorstr.length]; for (int i = 0; i < colorstr.length; i++) { menuit[i] = new JRadioButton(colorstr[i]); menuit[i].addActionListener(this); buttongroop.add(menuit[i]); menu_color.add(menuit[i]); } } { popupmenu = new JPopupMenu(); String[] menuitems_cut = {"剪切","复制","粘贴"}; JMenuItem[] popupmenuitems = new JMenuItem[menuitems_cut.length]; for (int i = 0; i < popupmenuitems.length; i++) { popupmenuitems[i] = new JMenuItem(menuitems_cut[i]); popupmenu.add(popupmenuitems[i]); popupmenuitems[i].addActionListener(this); } text.add(popupmenu); popupmenuitems[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y,InputEvent.CTRL_MASK)); } } public static void main(String[] args) { new EditorJFrame(); } @Override public void mouseClicked(MouseEvent e) { if(e.getModifiers()==MouseEvent.BUTTON3_MASK){ popupmenu.show(text, e.getX(), e.getY()); } } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseReleased(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { } @Override public void actionPerformed(ActionEvent e) { if(e.getSource() instanceof JComboBox ||e.getSource() instanceof JCheckBox){ try { String fontname = (String) combobox_name.getSelectedItem(); int size = Integer.parseInt((String)combobox_color.getSelectedItem()); if(size<4||size>120){ throw new Exception("SizeException"); } Font font = text.getFont(); int style = font.getStyle(); if(e.getSource()==checkbox_bold){ style = style^1; } if(e.getSource()==checkbox_italic){ style = style^2; } text.setFont(new Font(fontname, style, size)); } catch (NumberFormatException e1) { JOptionPane.showConfirmDialog(this, "\""+(String)combobox_color.getSelectedItem()+"\"不能转换成整数,请重新输入!"); } catch (Exception e2) { if(e2.getMessage().equals("SizeException")){ JOptionPane.showMessageDialog(this, "字体不合适,请重新输入!"); } } } if(e.getSource() instanceof JRadioButton){ if(e.getSource()==radios[0]||e.getSource()==menuit[0]){ color = colors[0]; } if(e.getSource()==radios[1]||e.getSource()==menuit[1]){ color = colors[1]; } if(e.getSource()==radios[2]||e.getSource()==menuit[2]){ color = colors[2]; } text.setForeground(color); } if(e.getSource()==combobox_color){ String size = (String) combobox_color.getSelectedItem(); int i = 0,n=combobox_color.getItemCount(); while(i<n && size.compareToIgnoreCase((String)combobox_color.getItemAt(i))>=0){ if(size.compareToIgnoreCase((String)combobox_color.getItemAt(i))==0){ return ; } i++; } combobox_color.insertItemAt(size, i); } if(e.getSource() instanceof JMenuItem){ if(e.getActionCommand().equals("退出")){ if(JOptionPane.showConfirmDialog(this, "亲~~你真的要退出吗?")==JOptionPane.OK_OPTION){ System.exit(0); } } if(e.getActionCommand().equals("复制")){ text.copy(); } if(e.getActionCommand().equals("粘贴")){ text.paste(); } if(e.getActionCommand().equals("剪贴")){ text.cut(); } } } }
相关文章推荐
- ASP 500错误解决方法
- exited with code 1
- mysql中的G标志实现纵向显示
- View onRestoreInstanceState ClassCastException
- CocoaPods的安装和使用方法
- iOS开发多线程篇—NSOperation简单介绍
- Linux线程的thread.c
- UIView 拖动窗口代码
- 智慧城市解决方案
- ZooKeeper的基本原理
- 性能调优
- 聊聊移动端跨平台开发(后续)
- 7. Laravel5学习笔记:如何定义自己的视图组件
- JavaScript利用装饰模拟实现私有状态
- Ajax_post发送
- ZooKeeper 单机安装
- 揭秘酷狗新办公室,一起晒晒你的办公室
- 健身课程说明
- python 非贪婪多匹配,注意使用findall
- plist解释