• 第十三周总结


    一、键盘事件及监听处理

    在Swing的事件处理中可以对键盘的操作进行监听,直接使用KeyListener接口即可。

    用于接收键盘事件(击键)的侦听器接口。旨在处理键盘事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象 KeyAdapter 类(仅重写有用的方法)。
    然后使用组件的 addKeyListener 方法将从该类所创建的侦听器对象向该组件注册。按下、释放或键入键时生成键盘事件。然后调用侦听器对象中的相关方法并将该 KeyEvent 传递给它。

    如想取得键盘键入的内容,可通过KeyEvent取得。

    二、鼠标事件及监听处理

    对鼠标操作监听,如鼠标按下松开等,使用MouseListener接口。

    在鼠标事件触发后都会产·生MouseEvent事件,可从中得到鼠标的相关操作。

    三、鼠标拖拽事件及监听处理

    可用MouseMotionListener接口完成鼠标拖拽操作。

    接口方法如下:

    vido mouseDragged(MouseEvent e) 在组建上按下并拖动时调用
    vido mouseMoved(MouseEvent e)    鼠标移动到组件时调用
    

    四、单选钮:JRadioButton

    一种常见输入组件,可实现N选一功能。在Swing中可以使用JRadioButton完成一组单选钮的操作。

    默认情况下,单选按钮显示一个圆形图标,通常在其旁放置一些说明性文字。当用户选中某个单选按钮后,按钮组中其它按钮将被自动取消,这时就需要按钮组(ButtonGroup)来将同组按钮放在一起,该按钮组中的按钮只能选择一个,而不在此按钮中的按钮不受影响。语法格式如下:

    JRadioButton jr1 = new JRadioButton();
    JRadioButton jr1 = new JRadioButton();
    JRadioButton jr1 = new JRadioButton();
    ButtonGroup group = new ButtonGroup();
    group.add(jr1);
    group.add(jr2);
    group.add(jr3);
    

    JRadioButton事件处理:可以使用ItemListener接口进行事件的监听,此方法中存在ItemEvent事件。

    五、菜单组件:

    JMenu与JMenuBar:若要Java中实现记事本类菜单,可使用JMenu组件要使用JMenuBar组件。JMenuBar功能为摆放JMenu组件。

    JMenu的常用方法:
    JMenu():建立一个空标题的菜单。
    JMenu(String s):建立一个标题为s的菜单。
    add(JMenuItem item):向菜单增加由参数item指定的菜单选项。
    add(JMenu menu):向菜单增加由参数menu指定的菜单。实现在菜单嵌入子菜单。
    addSeparator():在菜单选项之间画一条分隔线。
    getItem(int n):得到指定索引处的菜单项。
    getItemCount():得到菜单项数目。
    insert(JMenuItem item,int n):在菜单的位置n插入菜单项item.
    remove(int n):删除菜单位置n的菜单项
    removeAll():删除菜单的所有菜单项。
    

    JMenultem:使用JMenultem可以为菜单中加入菜单项。

    JMenultem类的常用方法:
    JMenuItem():构造无标题的菜单项。
    JMenuItem(String s):构造有标题的菜单项。
    setEnabled(boolean b):设置当前单项是否可被选择。
    isEnabled():返回当前菜单项是否可被用户选择。
    getLabel():得到菜单项的名称。
    setLabel():设置菜单选项的名称。
    addActionListener(ActionListener e):为菜单项设置监视器。监视器接受点击某个菜单的动作事件
    

    简易记事本源代码:

    package o;
    
    
    import javax.swing.*; 
      
    import java.awt.*; 
    import java.awt.event.*; 
    import java.io.*; 
      
    public class OMG { 
        
      //定义组件: 
      JFrame f; 
      MenuBar mb;  //菜单栏 
      Menu mu;    //菜单 
      JTextArea jta; 
      MenuItem openItem, saveItem, closeItem;  //子菜单 
      FileDialog openDia,saveDia;  //弹出的保存和打开框 
        
      File file; 
        
        
      //构造函数 
      public OMG() 
      { 
        //调用初始化函数 
        init(); 
      } 
      //对组件进行初始化操作 
      public void init() 
      { 
        f=new JFrame("简易记事本"); 
        mb=new MenuBar(); 
        mu=new Menu("文件"); 
        openItem=new MenuItem("打开"); 
        saveItem=new MenuItem("保存"); 
        closeItem=new MenuItem("退出"); 
        jta=new JTextArea(); 
          
        f.add(jta); 
          
        //添加 
        mu.add(openItem); 
        mu.add(saveItem); 
        mu.add(closeItem); 
          
        mb.add(mu); 
          
        f.setMenuBar(mb); 
          
        openDia=new FileDialog(f, "打开", FileDialog.LOAD); 
        saveDia=new FileDialog(f, "保存", FileDialog.SAVE); 
          
        //设置JFrame属性 
        f.setBounds(200, 300, 500, 400); 
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        f.setVisible(true); 
          
        //调用事件函数 
        event(); 
          
      } 
        
      //事件函数,对事件进行处理 
      public void event() 
      { 
        //打开选项 
        openItem.addActionListener(new ActionListener() 
        { 
      
          @Override
          public void actionPerformed(ActionEvent e) { 
              
          //调用打开文件的方法 
            openFile(); 
                    
          } 
            
            
        }); 
          
        //保存选项 
        saveItem.addActionListener(new ActionListener() 
        { 
      
          @Override
          public void actionPerformed(ActionEvent e) { 
            
          //调用保存文件的方法。 
           saveFile();   
              
          } 
            
            
        }); 
        //添加一个文本区域的事件,即按下Ctrl+S可以保存 
        //因为键盘监听事件有多种方法,而我们只需要其中的一种,所以可以使用适配器KeyAdapter, 
        //从而只需要实现一种方法即可 
        jta.addKeyListener(new KeyAdapter() 
        { 
          //键盘按下方法 
          public void keyPressed(KeyEvent e){ 
        
            if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_S) 
            { 
              //调用保存文件的方法。 
               saveFile();   
              //JOptionPane.showMessageDialog(null, "对啦"); 
            } 
          } 
        }); 
          
        //关闭选项 
        closeItem.addActionListener(new ActionListener() 
        { 
      
          @Override
          public void actionPerformed(ActionEvent e) { 
            
            //退出系统 
            System.exit(0); 
              
          } 
            
        }); 
      } 
        
      //打开文本的方法 
      public void openFile() 
      { 
        openDia.setVisible(true); //设置其显示出来 
          
        //获取路径和文件名 
        String dirPath=openDia.getDirectory(); 
        String fileName=openDia.getFile(); 
          
        //防止点击取消报错 
        if(dirPath==null || fileName==null) 
          return ; 
          
        jta.setText(""); //将文本区域清空 
          
        file=new File(dirPath,fileName); //建立文件对象 
          
        //按照行来读取数据,显示在文本区域 
        try
        { 
          BufferedReader br = new BufferedReader(new FileReader(file)); 
      
          String line = null; 
      
          while((line=br.readLine())!=null) 
          { 
            jta.append(line+"
    "); 
          } 
      
          br.close(); 
        } 
        catch (IOException ex) 
        { 
          throw new RuntimeException("读取失败"); 
        } 
      } 
      //保存文本的方法。 
      public void saveFile() 
      { 
        //先判断文件是否存在 
        if(file==null) 
        { 
          saveDia.setVisible(true); 
            
          String dirPath = saveDia.getDirectory(); 
          String fileName = saveDia.getFile(); 
            
          //防止点击取消报错 
          if(dirPath==null || fileName==null) 
            return ;   
          //因为文件不存在。所以需要建立file对象 
          file = new File(dirPath,fileName);        
        } 
          
        //将数据写入文件 
        try { 
          BufferedWriter bw=new BufferedWriter(new FileWriter(file)); 
            
          String info=jta.getText(); //得到文本区域的信息 
            
          bw.write(info); //写入操作 
          bw.flush(); 
          bw.close(); 
            
        } catch (IOException e1) { 
            
          throw new RuntimeException(); 
        }     
          
      } 
        
        
      public static void main(String[] args) { 
          
          //创建对象 
        new OMG(); 
      } 
      
    }
    
  • 相关阅读:
    在VirtualBox安装debian8.8(完整版)
    Ubuntu18.04 离线安装 docker
    基于JWT的Token认证机制及安全问题
    BTree
    ConcurrentHashMap原理
    Utf8BomRemover
    Spring源码下载
    【intellij idea】Project Structure 讲解 Ctrl+Alt+Shift+S
    idea使用过程中, maven包已经正常下载,但是项目中依然无法引入,提示不存在
    java正则判断字符串是否含有中文、数字、字母
  • 原文地址:https://www.cnblogs.com/Duya9ian/p/11910973.html
Copyright © 2020-2023  润新知