十三周总结

1.实验代码

packagetest4;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.swing.*;

public class Notepad implements ActionListener {
      JFrame frame;
      JMenuBar bar;
      JMenu fileMenu,editMenu;
      ImageIcon newIcon,openIcon,saveIcon,closeIcon;
      JMenuItem newItem,openItem,saveItem,closeItem;
      JTextArea jta;
      JScrollPane scroll;
      File file;
      
      public Notepad() {
          frame=new JFrame("记事本");
          bar=new JMenuBar();
          fileMenu=new JMenu("文件");
          editMenu=new JMenu("编辑");
          jta=new JTextArea(); 
          scroll=new JScrollPane(jta,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
          newIcon=new ImageIcon("f:"+File.separator+"tupian"+File.separator+"1.png");
          openIcon=new ImageIcon("f:"+File.separator+"tupian"+File.separator+"2.png");
          saveIcon=new ImageIcon("f:"+File.separator+"tupian"+File.separator+"3.png");
          closeIcon=new ImageIcon("f:"+File.separator+"tupian"+File.separator+"4.png");
          newItem=new JMenuItem("新建(N)",newIcon);
          openItem=new JMenuItem("打开(O)",openIcon);
          saveItem=new JMenuItem("保存(S)",saveIcon);
          closeItem=new JMenuItem("关闭(C)",closeIcon);
          
          newItem.setMnemonic(KeyEvent.VK_N);
          openItem.setMnemonic(KeyEvent.VK_O);
          saveItem.setMnemonic(KeyEvent.VK_S);
          closeItem.setMnemonic(KeyEvent.VK_C);
          
          newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
          openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
          saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
          closeItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
          
          newItem.addActionListener(this);
          openItem.addActionListener(this);
          saveItem.addActionListener(this);
          closeItem.addActionListener(this);
          bar.add(fileMenu);
          bar.add(editMenu);
          fileMenu.add(newItem);
          fileMenu.add(openItem);
          fileMenu.add(saveItem);
          fileMenu.add(closeItem);        
          frame.add(scroll);
          frame.setJMenuBar(bar);
          frame.setVisible(true);
          frame.setSize(400, 300);
      }

    @Override
    public void actionPerformed(ActionEvent event) {
        Object obj=event.getSource();
        if(obj instanceof JMenuItem) {
            JMenuItem item=(JMenuItem)obj;
            if(item==newItem) {
                new Notepad();
            }else if(item==openItem) {
                JFileChooser chooser = new JFileChooser();
                chooser.showOpenDialog(null);
                file=chooser.getSelectedFile();
                try {
                    FileInputStream fis = new FileInputStream(file);
                    byte[] b=new byte[fis.available()];
                    fis.read(b);
                    jta.append(new String(b));
                    fis.close();
                }catch(FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {               
                    e.printStackTrace();
                }
            }else if(item==saveItem) {
                JFileChooser chooser = new JFileChooser();
                chooser.showSaveDialog(null);
                file=chooser.getSelectedFile();
                if(!file.exists()) {
                    try {
                        file.createNewFile();
                    }catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }else if(item==closeItem) {
                System.exit(0);
            }
        }
        
    }
}

 

 

2.运行截图.

1.菜单组件

public void setMnemonic(int mnemonic)

这个方法可以设置键盘助记字符,不过该方法的使用是依赖Swing组件的菜单分层结构的,也就是说设置了该助记字符的菜单项目必须已经展开了,才能使用(通过和Alt+键结合使用).
值得注意的是 setMnemonic 并非是JMenuItem的方法,而是来着他的父类AbstractButton的,所以该方法通常是不应用于菜单项的。
JMenuItem自身有一个方法 public void setAccelerator(KeyStroke keyStroke) 该方法的功能要比上面的那个方法要强大,该方法可以设置菜单项的快捷键,它是不依赖菜单的分层结构的。

 2.带滚动条的文本框
需注意的有两点:
1.默认的滚动条,仅在输入的文本超过文本框时才会显示。。没有超过文本框是不会显示的;
2.设置矩形大小,是在滚动条上设置,而不是在文本框上设置;


            

posted @ 2019-11-23 22:58  gyyyy  阅读(195)  评论(0编辑  收藏  举报