您的位置:首页 > 其它

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();
			}
			
		}
	}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: