2019.10.25

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

截图:

posted @ 2020-01-07 21:28  z全  阅读(188)  评论(0)    收藏  举报