Java源码-AWT菜单的实现

菜单对于GUI(图形用户界面)而言,就是程序的门户,重要性不言而喻。

以下代码实现了简单的菜单功能,包括快捷键支持。

总之,通过代码,可以对界面进行扫描式精确控制(窗口->菜单栏->菜单->菜单项/菜单->菜单项/菜单...)。


代码如下(摘自《疯狂Java讲义》第11章-AWT编程):

package crazyJavaExample;


import java.awt.*;
import java.awt.event.*;

public class SimpleMenu
{
	private Frame f = new Frame("测试");
	private MenuBar mb = new MenuBar();
	Menu file = new Menu("File");
	Menu edit = new Menu("Edit");
	MenuItem newItem = new MenuItem("New");
	MenuItem saveItem = new MenuItem("Save");
	// 创建exitItem菜单项,指定使用 Ctrl+X 快捷键
	MenuItem exitItem = new MenuItem("Exit"
		, new MenuShortcut(KeyEvent.VK_X));
	CheckboxMenuItem autoWrap = new CheckboxMenuItem("Auto Wrap");
	MenuItem copyItem = new MenuItem("Copy");
	MenuItem pasteItem = new MenuItem("Paste");
	Menu format = new Menu("Format");
	// 创建commentItem菜单项,指定使用 Ctrl+Shift+/ 快捷键
	MenuItem commentItem = new MenuItem("Comment" ,
		new MenuShortcut(KeyEvent.VK_SLASH , true));
	MenuItem cancelItem = new MenuItem("Uncomment");
	private TextArea ta = new TextArea(6 , 40);
	public void init()
	{
		// 以Lambda表达式创建菜单事件监听器
		ActionListener menuListener = e ->
		{
			String cmd = e.getActionCommand();
			ta.append("单击“" + cmd + "”菜单" + "\n");
			if (cmd.equals("退出"))
			{
				System.exit(0);
			}
		};
		// 为commentItem菜单项添加事件监听器
		commentItem.addActionListener(menuListener);
		exitItem.addActionListener(menuListener);
		// 为file菜单添加菜单项
		file.add(newItem);
		file.add(saveItem);
		file.add(exitItem);
		// 为edit菜单添加菜单项
		edit.add(autoWrap);
		// 使用addSeparator方法来添加菜单分隔线
		edit.addSeparator();
		edit.add(copyItem);
		edit.add(pasteItem);
		// 为format菜单添加菜单项
		format.add(commentItem);
		format.add(cancelItem);
		// 使用添加new MenuItem("-")的方式添加菜单分隔线
		edit.add(new MenuItem("-"));
		// 将format菜单组合到edit菜单中,从而形成二级菜单
		edit.add(format);
		// 将file、edit菜单添加到mb菜单条中
		mb.add(file);
		mb.add(edit);
		// 为f窗口设置菜单条
		f.setMenuBar(mb);
		// 以匿名内部类的形式来创建事件监听器对象
		f.addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent e)
			{
				System.exit(0);
			}
		});
		f.add(ta);
		f.pack();
		f.setVisible(true);
	}
	public static void main(String[] args)
	{
		new SimpleMenu().init();
	}
}


运行截屏:


Java漂亮的树形菜单制作实例(源码),森林状的关系图,文本域,用于显示点击的节点名称,使用了JTree,可以看作是一个jTree的用法演示实例。树形菜单应用广泛,这个Tree制作漂亮,相信会让很多朋友从中学习到实现的方法,效果如演示截图所示。下面是相关的代码片段:   DefaultMutableTreeNode root = new DefaultMutableTreeNode("设置"); //生成根节点   DefaultMutableTreeNode node1=new DefaultMutableTreeNode("常规"); //生成节点一   node1.add(new DefaultMutableTreeNode("默认路径")); //增加新节点到节点一上   node1.add(new DefaultMutableTreeNode("保存选项"));   root.add(node1); //增加节点一到根节点上   root.add(new DefaultMutableTreeNode("界面"));   root.add(new DefaultMutableTreeNode("提示声音"));   root.add(new DefaultMutableTreeNode("打印"));   JTree tree = new JTree(root); //得到JTree的实例   DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer)tree.getCellRenderer(); //得到JTree的Renderer   renderer.setLeafIcon(null); //设置叶子节点图标为空   renderer.setClosedIcon(null); //设置关闭节点的图标为空   renderer.setOpenIcon(null); //设置打开节点的图标为空   tree.addTreeSelectionListener(new TreeSelectionListener() {//选择节点的事件处理   public void valueChanged(TreeSelectionEvent evt) {   TreePath path = evt.getPath(); //得到选择路径   String info=path.getLastPathComponent().toString(); //得到选择的节点名称   jtfInfo.setText(info); //在文本域中显示名称   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值