java菜单+文件选择器作业

1、创建如下下拉式菜单“定制个性化菜单”(教材P428例23.7)

代码:
package MyMenu;

import javax.swing.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;

public class MyMenuBar {
    JFrame f;
    JPanel p;
    ButtonGroup buttonGroup;
    JMenuBar menuBar;
    JMenu fileMenu,openMenu,fontMenu,editMenu,attributeMenu,help;
    JMenuItem newItem,openNewItem,openClosedItem,preserve,exit,cut,paste,copy;
    JCheckBoxMenuItem bCheckBoxItem,iCheckBoxItem;
    JRadioButtonMenuItem rRadioButtonItem,eRadioButtonItem;
    public MyMenuBar() {
        f=new JFrame("定制个性化菜单");
        menuBar=new JMenuBar();
        buttonGroup=new ButtonGroup();
        fileMenu=new JMenu("文件(F)");
        editMenu=new JMenu("编辑(E)");
        openMenu=new JMenu("打开(O)");
        help=new JMenu("帮助(H)");
        fontMenu=new JMenu("字体(F)");
        attributeMenu=new JMenu("属性(A)");
        newItem=new JMenuItem("新建(N)");
        openNewItem=new JMenuItem("未打开过的(N)");
        openClosedItem=new JMenuItem("刚打开过的(C)");
        preserve=new JMenuItem("保存(S)");
        exit=new JMenuItem("退出(E)");
        cut=new JMenuItem("剪切(T)");
        copy=new JMenuItem("复制(C)");
        paste=new JMenuItem("粘贴(P)");
        rRadioButtonItem=new JRadioButtonMenuItem("只读(R)");
        eRadioButtonItem=new JRadioButtonMenuItem("编辑(E)");
        bCheckBoxItem=new JCheckBoxMenuItem("加粗(B)");
        iCheckBoxItem=new JCheckBoxMenuItem("斜体(I)");
        //窗体设置
        f.setVisible(true);
        f.setBounds(500, 200, 500, 400);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setJMenuBar(menuBar);
        //设置快捷键与加速器
        fileMenu.setMnemonic('F');
        newItem.setMnemonic('N');
        newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));
        editMenu.setMnemonic('E');
        openMenu.setMnemonic('O');
        openNewItem.setMnemonic('N');
        openNewItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK|InputEvent.ALT_MASK));
        openClosedItem.setMnemonic('C');
        openClosedItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK|InputEvent.ALT_MASK));
        fontMenu.setMnemonic('F');
        bCheckBoxItem.setMnemonic('B');
        bCheckBoxItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,InputEvent.CTRL_MASK|InputEvent.ALT_MASK));
        iCheckBoxItem.setMnemonic('I');
        iCheckBoxItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I,InputEvent.CTRL_MASK|InputEvent.ALT_MASK));
        attributeMenu.setMnemonic('A');
        rRadioButtonItem.setMnemonic('R');
        rRadioButtonItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,InputEvent.CTRL_MASK|InputEvent.ALT_MASK));
        eRadioButtonItem.setMnemonic('E');
        eRadioButtonItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK|InputEvent.ALT_MASK));
        preserve.setMnemonic('S');
        preserve.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));
        exit.setMnemonic('E');
        exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_MASK));
        cut.setMnemonic('T');
        cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_MASK));
        copy.setMnemonic('C');
        copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK));
        paste.setMnemonic('P');
        paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_MASK));
        //添加组件文件
        menuBar.add(fileMenu);
        menuBar.add(editMenu);
        menuBar.add(help);
        fileMenu.add(newItem);
        fileMenu.add(openMenu);
        fileMenu.addSeparator();
        fileMenu.add(preserve);
        fileMenu.addSeparator();
        fileMenu.add(exit);
        openMenu.add(openNewItem);
        openMenu.add(openClosedItem);
        openClosedItem.setEnabled(false);
        //编辑
        editMenu.add(cut);
        editMenu.add(copy);
        editMenu.addSeparator();
        editMenu.add(paste);
        editMenu.add(fontMenu);
        editMenu.addSeparator();
        editMenu.add(attributeMenu);
        fontMenu.add(bCheckBoxItem);
        fontMenu.add(iCheckBoxItem);
        buttonGroup.add(rRadioButtonItem);
        attributeMenu.add(rRadioButtonItem);
        rRadioButtonItem.setSelected(true);
        buttonGroup.add(eRadioButtonItem);
        attributeMenu.add(eRadioButtonItem);
        //加图标
        Icon icon=new ImageIcon("D:/图片/img.jpg");
        cut.setIcon(icon);
        copy.setIcon(icon);
        paste.setIcon(icon);
        fontMenu.setIcon(icon);
        attributeMenu.setIcon(icon);
    }
    public static void main(String[] args) {
        new MyMenuBar();
    }
}

截图:

2、创建如下下拉式菜单“菜单控制字体和颜色”,并根据选择调整“示例文字”的字体和颜色。

代码:
package MyMenu;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
/*a=字体,b=帮助,c=样式,d=颜色,e=退出,f=关于,
g=delete,h=粗体,i=斜体,j=红色,k=绿色,l=蓝色*/
public class MyMenuControl implements ActionListener{
    int bold = 0,italic = 0;
    JFrame jf;
    JTextArea ta;
    JMenuBar menubar;
    JMenu a,b,c,d;
    JCheckBoxMenuItem h,i;
    JMenuItem e,f,g,j,k,l;
    public MyMenuControl(){
        jf=new JFrame("菜单控制字体和颜色");
        ta=new JTextArea("实例文字");
        menubar=new JMenuBar();
        a=new JMenu("字体(F)");
        b=new JMenu("帮助");
        c=new JMenu("样式");
        d=new JMenu("颜色");
        e=new JMenuItem("退出");
        f=new JMenuItem("关于");
        g=new JMenuItem("delete");
        h=new JCheckBoxMenuItem("粗体(B)");
        i=new JCheckBoxMenuItem("斜体");
        j=new JMenuItem("红色");
        k=new JMenuItem("绿色");
        l=new JMenuItem("蓝色");
        //窗体设置
        jf.setLayout(null);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setBounds(300, 200, 300, 300);
        //添加组件一级
        jf.setJMenuBar(menubar);
        jf.add(ta);
        ta.setBounds(100, 0, 84, 25);
        ta.setFont(new Font("微软雅黑",Font.PLAIN,20));
        menubar.add(a);
        menubar.add(b);
        a.add(c);
        a.add(d);
        a.addSeparator();
        a.add(e);
        a.add(f);
        a.add(g);
        //添加组件二级
        c.add(h);
        c.add(i);
        d.add(j);
        d.add(k);
        d.add(l);
        //加快捷键和加速器
        /*a=字体,b=帮助,c=样式,d=颜色,e=退出,f=关于,
        g=delete,h=粗体,i=斜体,j=红色,k=绿色,l=蓝色*/
        a.setMnemonic('F');
        h.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B, InputEvent.ALT_MASK|InputEvent.SHIFT_MASK));
        Icon icon=new ImageIcon("D:/图片/img.jpg");
        g.setMnemonic('D');
        g.setIcon(icon);
        g.setEnabled(false);
        //加监听
        e.addActionListener(this);
        h.addActionListener(this);
        i.addActionListener(this);
        j.addActionListener(this);
        k.addActionListener(this);
        l.addActionListener(this);
    }
    public static void main(String[] args){
        new MyMenuControl();
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        String str=e.getActionCommand();
        if(str.equals("退出")) {
            System.exit(0);
        }
        if(h.isSelected()) {
            bold=Font.BOLD;
        }else {
            bold=Font.PLAIN;
        }
        if(i.isSelected()) {
            italic=Font.ITALIC;
        }else {
            italic=Font.PLAIN;
        }
        if(str.equals("红色")) {
            ta.setForeground(Color.RED);
        }else if(str.equals("绿色")) {
            ta.setForeground(Color.GREEN);
        }else if(str.equals("蓝色")) {
            ta.setForeground(Color.BLUE);
        }
        ta.setFont(new Font("微软雅黑",bold+italic,20));
    }
}

截图:

3、创建如下弹出式菜单“创建弹出式菜单”(教材P426例23.6)

代码:
package MyMenu;

import java.awt.event.*;

import javax.swing.*;

public class MyPopupMenu {
    JFrame f;
    JPopupMenu pm;
    JMenuItem cut,copy,paste,read,write,bold,italic;
    JMenu editMenu,fontMenu;
    
    public MyPopupMenu() {
        f=new JFrame("创建弹出式菜单");
        pm=new JPopupMenu();
        cut=new JMenuItem("剪切");
        copy=new JMenuItem("复制");
        paste=new JMenuItem("粘贴");
        read=new JMenuItem("只读");
        write=new JMenuItem("可写");
        bold=new JMenuItem("粗体");
        italic=new JMenuItem("斜体");
        editMenu=new JMenu("编辑");
        fontMenu=new JMenu("字体");
        //加监听
        f.addMouseListener(new MouseAdapter() {
            public void mouseReleased(MouseEvent e) {
                if(e.isPopupTrigger()) {
                    pm.show(e.getComponent(), e.getX(), e.getY());
                }
            }
        });
        //设置窗口
        f.setVisible(true);
        f.setLayout(null);
        f.setBounds(500, 200, 400, 300);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //添加组件一级
        f.add(pm);
        pm.add(cut);
        pm.add(copy);
        pm.add(paste);
        pm.add(editMenu);
        //添加组件二级
        editMenu.add(read);
        editMenu.add(write);
        editMenu.add(fontMenu);
        //添加组件三级
        fontMenu.add(bold);
        fontMenu.add(italic);
    }
    public static void main(String[] args) {
        new MyPopupMenu();
    }
}

截图:

4、文件选择对话框实例(教材P432例23.9)

代码:
package MyMenu;

import javax.swing.*;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.*;
import java.io.File;

public class MyFileChooser {
    JFrame f;
    JTextField t;
    JButton b;
    public MyFileChooser() {
        f=new JFrame("文件选择对话框");
        t=new JTextField(20);
        b=new JButton("上传");
        //加监听
        b.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                JFileChooser fileChooser=new JFileChooser();
                int i=fileChooser.showOpenDialog(f.getContentPane());
                if(i==JFileChooser.APPROVE_OPTION) {
                    File selectedFile=fileChooser.getSelectedFile();
                    t.setText(selectedFile.getName());
                }
            }
        });
        //窗体设置
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setBounds(500, 300, 300, 100);
        f.setLayout(new FlowLayout());
        //添加组件
        f.add(t);
        f.add(b);
    }
    public static void main(String[] args) {
        new MyFileChooser();
    }
}

截图:


5、使用文件过滤器实例(教材P434例23.10)

代码:
package MyMenu;

import java.awt.BorderLayout;
import java.awt.event.*;
import java.io.File;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;

public class MyFileFilter {
    JFrame f;
    JLabel l;
    public MyFileFilter() {
        f=new JFrame("选择照片对话框");
        l=new JLabel("<双击选择文件>",SwingConstants.CENTER);
        //加监听
        l.addMouseListener(new MouseAdapter() {
            JFileChooser fileChooser;
            {
                fileChooser=new JFileChooser();
                FileFilter filter=new FileNameExtensionFilter(
                        "图像文件(JPG/GIF/PNG)","JPG","JPGE","GIF","PNG");
                fileChooser.setFileFilter(filter);
            }
            public void mouseClicked(MouseEvent e) {
                if(e.getClickCount()==2) {
                    int i=fileChooser.showOpenDialog(f.getContentPane());
                    if(i==JFileChooser.APPROVE_OPTION) {
                        File selectedFile=fileChooser.getSelectedFile();
                        l.setIcon(new ImageIcon(selectedFile.getAbsolutePath()));
                        l.setText(null);
                    }
                }
            }
        });
        f.getContentPane().add(l,BorderLayout.CENTER);
        //设置窗体
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setBounds(400, 200, 400, 400);
    }
    public static void main(String[] args) {
        new MyFileFilter();
    }
}

截图:


6设计一窗口程序,显示如下图所示文件菜单,右键单击显示相
同的弹出式菜单,选择菜单时以文本方式显示选中菜单内容。(选作!)

代码:
package MyMenu;

import java.awt.event.*;
import javax.swing.*;

public class MyWordpad implements ActionListener {
    /*a=新建,b=打开,c=保存,d=另存为,e=页面设置
    f=打印,g=退出,h=编辑,i=格式,j=查看,k=帮助*/
    JFrame jf;
    JMenuBar mb;
    JMenu filemenu,h,i,j,k;
    JPopupMenu pm;
    JMenuItem a1,b1,c1,d1,e1,f1,g1,a2,b2,c2,d2,e2,f2,g2;
    public MyWordpad() {
        jf=new JFrame("无标题-记事本");
        mb=new JMenuBar();
        filemenu=new JMenu("文件(F)");
        pm=new JPopupMenu();
        a1=new JMenuItem("新建(N)");
        b1=new JMenuItem("打开(O)");
        c1=new JMenuItem("保存(S)");
        d1=new JMenuItem("另存为(A)");
        e1=new JMenuItem("页面设置(U)");
        f1=new JMenuItem("打印(P)");
        g1=new JMenuItem("退出(X)");
        a2=new JMenuItem("新建(N)");
        b2=new JMenuItem("打开(O)");
        c2=new JMenuItem("保存(S)");
        d2=new JMenuItem("另存为(A)");
        e2=new JMenuItem("页面设置(U)");
        f2=new JMenuItem("打印(P)");
        g2=new JMenuItem("退出(X)");
        h=new JMenu("编辑(E)");
        i=new JMenu("格式(O)");
        j=new JMenu("查看(V)");
        k=new JMenu("帮助(H)");
        //设置窗体
        jf.setVisible(true);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setBounds(100, 100, 300, 300);
        jf.setLayout(null);
        jf.setJMenuBar(mb);
        jf.add(pm);
        //菜单栏添加组件
        mb.add(filemenu);
        mb.add(h);
        mb.add(i);
        mb.add(j);
        mb.add(k);
        //文件添加组件
        filemenu.add(a1);
        filemenu.add(b1);
        filemenu.add(c1);
        filemenu.add(d1);
        filemenu.addSeparator();
        filemenu.add(e1);
        filemenu.add(f1);
        filemenu.addSeparator();
        filemenu.add(g1);
        //弹出式菜单添加组件
        pm.add(a2);
        pm.add(b2);
        pm.add(c2);
        pm.add(d2);
        pm.addSeparator();
        pm.add(e2);
        pm.add(f2);
        pm.addSeparator();
        pm.add(g2);
        //弹出式菜单加监听
        jf.addMouseListener(new MouseAdapter() {
            public void mouseReleased(MouseEvent e) {
                if(e.isPopupTrigger()) {
                    pm.show(e.getComponent(), e.getX(), e.getY());
                }
            }
        });
        //加快捷键
        filemenu.setMnemonic('F');
        //加加速器
        a1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
        b1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
        c1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
        f1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
        a2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
        b2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
        c2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
        f2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
        //组件加监听
        a1.addActionListener(this);
        a2.addActionListener(this);
        b1.addActionListener(this);
        b2.addActionListener(this);
        c1.addActionListener(this);
        c2.addActionListener(this);
        d1.addActionListener(this);
        d2.addActionListener(this);
        e1.addActionListener(this);
        e2.addActionListener(this);
        f1.addActionListener(this);
        f2.addActionListener(this);
    }
        
        
    public static void main(String[] args) {
        new MyWordpad();
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        String str=e.getActionCommand();
        int n=str.length();
        int n1=n-3;
        String str1=str.substring(0,n1);
        System.out.println("你点击了:"+str1);
        
    }
}

截图:

猜你喜欢

转载自www.cnblogs.com/quan-2723365710/p/12163820.html