java之 ------ 图型界面(一)

来源:互联网 发布:编程需要哪些英语单词 编辑:程序博客网 时间:2024/05/22 06:14

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.MouseEvent;import java.awt.event.MouseListener;import javax.swing.ButtonGroup;import javax.swing.JCheckBox;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;public class EditorJFrame extends JFrame implements ActionListener,MouseListener{private JTextArea text;//文本区private JComboBox comboxName,comboxSize;//组合框private JCheckBox chkBold,chkItalic;//字形复选框private JRadioButton[] radioColors;//颜色单选按钮数组private JPopupMenu popMenu;//快捷菜单private boolean isTrue=true;private Color color;private boolean bool=true;public EditorJFrame(){super("文本编译器");this.setDefaultCloseOperation(EXIT_ON_CLOSE);//Dimension dim=this.getToolkit().getScreenSize();//获取屏幕分辨率//this.setBounds(dim.width/4, dim.height/4, dim.width/2, dim.height/2);this.setSize(800, 600);//设置窗口大小this.setLocationRelativeTo(null);//设置窗口位置居中text = new JTextArea("welcome....");this.getContentPane().add(new JScrollPane(text));JToolBar toolBar=new JToolBar();//工具栏,默认水平方向this.getContentPane().add(toolBar,"North");//工具栏添加到框架内容窗格北边GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();String[] fontsName=ge.getAvailableFontFamilyNames();//获取系统字体comboxName =new JComboBox(fontsName);//在组合框显示系统字体comboxName.addActionListener(this);//对组合框注册动作事件监听器toolBar.add(comboxName);String[] sizeStr={"20","30","40","50","60"};comboxSize=new JComboBox(sizeStr);//字号组合框comboxSize.setEditable(true);//设置组合框为可编辑comboxSize.addActionListener(this);//组合框注册动作事件监听器toolBar.add(comboxSize);chkBold =new JCheckBox("粗体");chkBold.addActionListener(this);toolBar.add(chkBold);chkItalic=new JCheckBox("斜体");chkItalic.addActionListener(this);toolBar.add(chkItalic);String[] colorStrs={"红","绿","蓝"};radioColors=new JRadioButton[colorStrs.length];ButtonGroup bgroup=new ButtonGroup();for(int i=0;i<radioColors.length;i++){radioColors[i]=new JRadioButton(colorStrs[i]);//颜色单选按钮radioColors[i].addActionListener(this);bgroup.add(radioColors[i]);toolBar.add(radioColors[i]);}addMyMenu();text.addMouseListener(this);this.setVisible(true);}private void addMyMenu() {JMenuBar menuBar=new JMenuBar();this.setJMenuBar(menuBar);//添加菜单栏String[] menuStrs={"文件", "编辑", "帮助"};JMenu[] menu=new JMenu[menuStrs.length];for(int i=0;i<menu.length;i++){menu[i]=new JMenu(menuStrs[i]);//菜单menuBar.add(menu[i]);}menu[0].add(new JMenuItem("打开"));menu[0].add(new JMenuItem("保存"));menu[0].addSeparator();//添加菜单项 并与exit之间用线分隔JMenuItem menuItemExit=new JMenuItem("退出");menuItemExit.setActionCommand("exit");menuItemExit.addActionListener(this);menu[0].add(menuItemExit);JMenuItem menuColor=new JMenuItem("颜色");menu[1].add(menuColor);menuColor.addActionListener(this);popMenu=new JPopupMenu();//快捷菜单String[] menuItemStrs={ "剪切", "复制", "粘贴" };JMenuItem[] popMenuItems=new JMenuItem[menuItemStrs.length];for(int i=0;i<popMenuItems.length;i++){popMenuItems[i]=new JMenuItem(menuItemStrs[i]);popMenu.add(popMenuItems[i]);popMenuItems[i].addActionListener(this);}text.add(popMenu);}public static void main(String[] args) {new EditorJFrame();}public void mouseClicked(MouseEvent e) {if(e.getModifiers()==MouseEvent.BUTTON3_MASK){//显示快捷菜单popMenu.show(text, 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 void actionPerformed(ActionEvent e) {if(e.getSource() instanceof JComboBox || e.getSource() instanceof JCheckBox){//控制输入字体大小为有效数字try{bool=!bool;//防止弹出两次异常if(bool){return ;}String fontName=(String) comboxName.getSelectedItem();int size=Integer.parseInt((String) comboxSize.getSelectedItem());if(size<4 || size>120){isTrue=false;throw new Exception("SizeException");}Font font=text.getFont();int style=font.getStyle();if(e.getSource()==chkBold){//字形整数的第0为表示粗体,第一位表示斜体style=style^1;}if(e.getSource()==chkItalic){style=style^2;}text.setFont(new Font(fontName,style,size));bool=true;}catch(NumberFormatException e1){JOptionPane.showMessageDialog(this, "\""+(String)comboxSize.getSelectedItem()+"\"不能转换成整数,请重新输入!");//  \" 表示引号}catch(Exception e2){if(e2.getMessage().equalsIgnoreCase("SizeException")){JOptionPane.showMessageDialog(this, "字体不合适,请重新输入!");}}}if(e.getSource() instanceof JRadioButton){//对单选按钮按下做出反应if(e.getSource()==radioColors[0]){color=new Color(255,0,0);}if(e.getSource()==radioColors[1]){color=new Color(0,255,0);}if(e.getSource()==radioColors[2]){color=new Color(0,0,255);}text.setForeground(color);}if(e.getSource()==comboxSize){if(!isTrue){//如果不符合要求  不要将字体大小放进字体大小的组合框isTrue=true;return ;}String size=(String)comboxSize.getSelectedItem();int i=0,n=comboxSize.getItemCount();while(i<n&&Integer.parseInt(size)>=Integer.parseInt((String)comboxSize.getItemAt(i))){if(Integer.parseInt(size)==Integer.parseInt((String)comboxSize.getItemAt(i))){return ;}i++;}comboxSize.insertItemAt(size, i);}}}



1 0
原创粉丝点击