疯狂JAVA讲义---第十一章(中):AWT编程-常用组件和事件处理

AIAgent知识表示与推理:基于本体论与规则引擎的实现 AIAgent知识表示与推理:基于本体论与规则引擎的实现 1. 背景介绍 人工智能(AI)系统的核心是知识表示和推理,这是实现智能行为的基础。在过去的几十年里,人工智能领域一直致力于研究如何有效地表示和推理知识,以支持智能系统的决策和行为。其中,基于本体论的知识表示和 阅读详情

GUI说起来多,其实用起来很方便。只是要怎么布局美观的问题,现在一般都用IDE插件拖动来完成这个工作,但学习下原理还是很有必要的,毕竟现在的插件动不动就卡住,有时所见非所得的情况很多。AWT提供的基本组件有以下几个,

Button

Canvas

Checkbox

CheckboxGroup

Choice

Frame

Label

List

Panel

Scrollbar

ScrollPane(带滚动条的Panel)

TextArea(多行文本域)

TextField(单行文本域)

这些没什么好说的,我举个例子就能说明一切,eg

  1. public class CommonComponent
  2. {
  3.     Frame f = new Frame("测试");
  4.     //定义一个按钮
  5.     Button ok = new Button("确认");
  6.     CheckboxGroup cbg = new CheckboxGroup();
  7.     //定义一个单选框(处于cbg一组),初始处于被选中状态
  8.     Checkbox male = new Checkbox("男" , cbg , true);
  9.     //定义一个单选框(处于cbg一组),初始处于没有选中状态
  10.     Checkbox female = new Checkbox("女" , cbg , false);
  11.     //定义一个复选框,初始处于没有选中状态
  12.     Checkbox married = new Checkbox("是否已婚?" , false);
  13.     //定义一个下拉选择框
  14.     Choice colorChooser = new Choice();
  15.     //定义一个列表选择框
  16.     List colorList = new List(6, true);
  17.     //定义一个5行、20列的多行文本域
  18.     TextArea ta = new TextArea(5, 20);
  19.     //定义一个50列的单行文本域
  20.     TextField name = new TextField(50);
  21.     public void init()
  22.     {
  23.         colorChooser.add("红色");
  24.         colorChooser.add("绿色");
  25.         colorChooser.add("蓝色");
  26.         colorList.add("红色");
  27.         colorList.add("绿色");
  28.         colorList.add("蓝色");
  29.         //创建一个装载了文本框、按钮的Panel
  30.         Panel bottom = new Panel();
  31.         bottom.add(name);
  32.         bottom.add(ok);
  33.         f.add(bottom , BorderLayout.SOUTH);
  34.         //创建一个装载了下拉选择框、三个Checkbox的Panel
  35.         Panel checkPanel = new Panel();
  36.         checkPanel.add(colorChooser);
  37.         checkPanel.add(male);
  38.         checkPanel.add(female);
  39.         checkPanel.add(married);
  40.         //创建一个垂直排列组件的Box,盛装多行文本域、Panel
  41.         Box topLeft = Box.createVerticalBox();
  42.         topLeft.add(ta);
  43.         topLeft.add(checkPanel);
  44.         //创建一个垂直排列组件的Box,盛装topLeft、colorList
  45.         Box top = Box.createHorizontalBox();
  46.         top.add(topLeft);
  47.         top.add(colorList);
  48.         //将top Box容器添加到窗口的中间
  49.         f.add(top); 
  50.         f.pack();
  51.         f.setVisible(true);
  52.     }
  53.     public static void main(String[] args) 
  54.     {
  55.         new CommonComponent().init();
  56.     }
  57. }

然后讲下对话框,分为两种:模态对话框(打开时主对话框锁定)和非模态对话框(打开时主对话框可以激活)eg

  1. public class TestDialog
  2. {
  3.     Frame f = new Frame("测试");  
  4.     Dialog d1 = new Dialog(f, "模式对话框" , true);
  5.     Dialog d2 = new Dialog(f, "非模式对话框" , false);
  6.     Button b1 = new Button("打开模式对话框");
  7.     Button b2 = new Button("打开非模式对话框");
  8.     public void init()
  9.     {
  10.         d1.setBounds(20 , 30 , 300, 400);
  11.         d2.setBounds(20 , 30 , 300, 400);
  12.         b1.addActionListener(new ActionListener()
  13.         {
  14.             public void actionPerformed(ActionEvent e)
  15.             {
  16.                 d1.setVisible(true);
  17.             }
  18.         });
  19.         b2.addActionListener(new ActionListener()
  20.         {
  21.             public void actionPerformed(ActionEvent e)
  22.             {
  23.                 d2.setVisible(true);
  24.             }
  25.         });
  26.         f.add(b1);
  27.         f.add(b2 , BorderLayout.SOUTH);
  28.         f.pack();
  29.         f.setVisible(true);
  30.     }
  31.     public static void main(String[] args) 
  32.     {
  33.         new TestDialog().init();
  34.     }
  35. }

文件对话框,eg

  1. public class TestFileDialog
  2. {
  3.     Frame f = new Frame("测试");  
  4.     FileDialog d1 = new FileDialog(f, "选择需要打开文件" , FileDialog.LOAD);
  5.     FileDialog d2 = new FileDialog(f, "选择保存文件的路径" , FileDialog.SAVE);
  6.     Button b1 = new Button("打开文件");
  7.     Button b2 = new Button("保存文件");
  8.     public void init()
  9.     {
  10.         b1.addActionListener(new ActionListener()
  11.         {
  12.             public void actionPerformed(ActionEvent e)
  13.             {
  14.                 d1.setVisible(true);
  15.                 System.out.println(d1.getDirectory() + d1.getFile());
  16.             }
  17.         });
  18.         b2.addActionListener(new ActionListener()
  19.         {
  20.             public void actionPerformed(ActionEvent e)
  21.             {
  22.                 d2.setVisible(true);
  23.                 System.out.println(d2.getDirectory() + d2.getFile());
  24.             }
  25.         });
  26.         f.add(b1);
  27.         f.add(b2 , BorderLayout.SOUTH);
  28.         f.pack();
  29.         f.setVisible(true);
  30.     }
  31.     public static void main(String[] args) 
  32.     {
  33.         new TestFileDialog().init();
  34.     }
  35. }

AWT菜单由以下几个部分组成:

MenuBar

Menu

PopupMenu

MenuItem

CheckboxMenuItem

MenuShortcut

这些都可以顾名思义,当要记住一个菜单的分隔线的使用 new MenuItem("-"),这里举个例子让大家来了解下,eg

  1. public class SimpleMenu
  2. {
  3.     private Frame f = new Frame("测试");
  4.     private MenuBar mb = new MenuBar();
  5.     Menu file = new Menu("文件");
  6.     Menu edit = new Menu("编辑");
  7.     MenuItem newItem = new MenuItem("新建");
  8.     MenuItem saveItem = new MenuItem("保存");
  9.     //创建exitItem菜单项,指定使用 Ctrl+X 快捷键
  10.     MenuItem exitItem = new MenuItem("退出" , new MenuShortcut(KeyEvent.VK_X));   
  11.     CheckboxMenuItem autoWrap = new CheckboxMenuItem("自动换行");
  12.     MenuItem copyItem = new MenuItem("复制");
  13.     MenuItem pasteItem = new MenuItem("粘贴");
  14.     Menu format = new Menu("格式");
  15.     //创建commentItem菜单项,指定使用 Ctrl+Shift+/ 快捷键
  16.     MenuItem commentItem = new MenuItem("注释" , 
  17.         new MenuShortcut(KeyEvent.VK_SLASH , true));
  18.     MenuItem cancelItem = new MenuItem("取消注释");
  19.     private TextArea ta = new TextArea(6 , 40);
  20.     public void init()
  21.     {
  22.         //以匿名内部类的形式创建菜单监听器
  23.         ActionListener menuListener = new ActionListener()
  24.         {
  25.             public void actionPerformed(ActionEvent e)
  26.             {
  27.                 String cmd = e.getActionCommand();
  28.                 ta.append("单击“" + cmd + "”菜单" + "/n");
  29.                 if (cmd.equals("退出"))
  30.                 {
  31.                     System.exit(0);
  32.                 }
  33.             }
  34.         };
  35.         //为commentItem、exitItem两个菜单项添加了事件监听器。
  36.         commentItem.addActionListener(menuListener);
  37.         exitItem.addActionListener(menuListener);
  38.         //为file菜单添加菜单项
  39.         file.add(newItem);
  40.         file.add(saveItem);
  41.         file.add(exitItem);
  42.         //为edit菜单添加菜单项
  43.         edit.add(autoWrap);
  44.         //使用addSeparator方法来添加菜单分隔线
  45.         edit.addSeparator();
  46.         edit.add(copyItem);
  47.         edit.add(pasteItem);
  48.         //为format菜单添加菜单项
  49.         format.add(commentItem);
  50.         format.add(cancelItem);
  51.         //使用添加new MenuItem("-")的方式添加菜单分隔线
  52.         edit.add(new MenuItem("-"));
  53.         //将format菜单组合到edit菜单中,从而形成二级菜单
  54.         edit.add(format);
  55.         //将file、edit菜单添加到mb菜单条中
  56.         mb.add(file);
  57.         mb.add(edit);
  58.         //为f窗口设置菜单条
  59.         f.setMenuBar(mb);
  60.         //以匿名内部类的形式来创建事件监听器对象
  61.         f.addWindowListener(new WindowAdapter()
  62.         {
  63.             public void windowClosing(WindowEvent e) 
  64.             {
  65.                 ta.append("用户试图关闭窗口!/n");
  66.                 System.exit(0);
  67.             }
  68.         });
  69.         f.add(ta);
  70.         f.pack();
  71.         f.setVisible(true);
  72.     }
  73.     public static void main(String[] args) 
  74.     {
  75.         new SimpleMenu().init();
  76.     }
  77. }

右键菜单

  1. public class TestPopupMenu
  2. {
  3.     private TextArea ta = new TextArea(4 , 30);
  4.     private Frame f = new Frame("测试");
  5.     PopupMenu pop = new PopupMenu();
  6.     CheckboxMenuItem autoWrap = new CheckboxMenuItem("自动换行");
  7.     MenuItem copyItem = new MenuItem("复制");
  8.     MenuItem pasteItem = new MenuItem("粘贴");
  9.     Menu format = new Menu("格式");
  10.     //创建commentItem菜单项,指定使用 Ctrl+Shift+/ 快捷键
  11.     MenuItem commentItem = new MenuItem("注释" , 
  12.         new MenuShortcut(KeyEvent.VK_SLASH , true));
  13.     MenuItem cancelItem = new MenuItem("取消注释");
  14.     public void init()
  15.     {
  16.         //以匿名内部类的形式创建菜单监听器
  17.         ActionListener menuListener = new ActionListener()
  18.         {
  19.             public void actionPerformed(ActionEvent e)
  20.             {
  21.                 String cmd = e.getActionCommand();
  22.                 ta.append("单击“" + cmd + "”菜单" + "/n");
  23.                 if (cmd.equals("退出"))
  24.                 {
  25.                     System.exit(0);
  26.                 }
  27.             }
  28.         };
  29.         //为commentItem、exitItem两个菜单项添加了事件监听器。
  30.         commentItem.addActionListener(menuListener);
  31.         //为pop菜单添加菜单项
  32.         pop.add(autoWrap);
  33.         //使用addSeparator方法来添加菜单分隔线
  34.         pop.addSeparator();
  35.         pop.add(copyItem);
  36.         pop.add(pasteItem);
  37.         //为format菜单添加菜单项
  38.         format.add(commentItem);
  39.         format.add(cancelItem);
  40.         //使用添加new MenuItem("-")的方式添加菜单分隔线
  41.         pop.add(new MenuItem("-"));
  42.         //将format菜单组合到pop菜单中,从而形成二级菜单
  43.         pop.add(format);
  44.         final Panel p = new Panel();
  45.         p.setPreferredSize(new Dimension(300, 160));
  46.         //向p窗口中添加PopupMenu对象
  47.         p.add(pop);
  48.         p.addMouseListener(new MouseAdapter()
  49.         {
  50.             public void mouseReleased(MouseEvent e)
  51.             {
  52.                 if (e.isPopupTrigger())
  53.                 {
  54.                     pop.show(p , e.getX() , e.getY());
  55.                 }
  56.             }
  57.         });
  58.         f.add(p);
  59.         f.add(ta , BorderLayout.NORTH);
  60.         //以匿名内部类的形式来创建事件监听器对象
  61.         f.addWindowListener(new WindowAdapter()
  62.         {
  63.             public void windowClosing(WindowEvent e) 
  64.             {
  65.                 ta.append("用户试图关闭窗口!/n");
  66.                 System.exit(0);
  67.             }
  68.         });
  69.         f.pack();
  70.         f.setVisible(true);
  71.     }
  72.     public static void main(String[] args) 
  73.     {
  74.         new TestPopupMenu().init();
  75.     }
  76. }

但是遗憾的是AWT不支持带有图标的菜单,如要使用请用Swing来解决。

 

Java语言将每一个键盘或鼠标的操作定义为一个“事件”。在编程中只需定义每个特定事件发生时程序应该做出何种响应即可。这就是图形用户界面中的“事件”和“事件响应”。事件处理的原理其实很简单,当程序启动时awt起个线程监听键盘,鼠标等的事件,当发生时产生个事件源,事件监听器负责监听事件,然后得到Event对象,然后根据Event对象来自己处理不同的事件。

下面看个最简单的事件处理,eg

  1. public class EventQs
  2. {
  3.     private Frame f = new Frame("测试事件");
  4.     private Button ok = new Button("确定"); 
  5.     private TextField tf = new TextField(30);
  6.     public void init()
  7.     {
  8.         //注册事件监听器
  9.         ok.addActionListener(new OkListener());
  10.         f.add(tf);
  11.         f.add(ok , BorderLayout.SOUTH);
  12.         f.pack();
  13.         f.setVisible(true);
  14.     }
  15.     //定义事件监听器类
  16.     class OkListener implements ActionListener
  17.     {
  18.         //下面定义的方法就是事件处理器,用于响应特定的事件
  19.         public void actionPerformed(ActionEvent e)
  20.         {
  21.             System.out.println("用户单击了ok按钮");
  22.             tf.setText("Hello World");
  23.         }
  24.     }
  25.     public static void main(String[] args) 
  26.     {
  27.         new EventQs().init();
  28.     }
  29. }

下面来看下事件的继承关系

EventObject
↑
AWT Event
↑
Component Event | Action Event | Adjustment Event | Item Event
↑
Input Event | Focus Event | Paint Event | Window Event
↑
Mouse Event | Key Event
↑
MouseWheel Event

EventObject类有一个子类AWTEvent,它是所有AWT事件类的父类.
有些Swing组件将生成其他事件类型的事件对象;它们都真接扩展于EventObject,而不是AWTEvent.
事件对象封装了事件源与监听器彼此通信的事件信息.在必要的时候,可以对传给监听器对象的事件对象过行分析.
 
事件监听器,这个太好用了,但要记住什么事件用什么监听器。eg
  1. public class TestWindowListener
  2. {
  3.     private Frame f = new Frame("测试");
  4.     private TextArea ta = new TextArea(6 , 40);
  5.     public void init()
  6.     {
  7.         f.addWindowListener(new MyListener());
  8.         f.add(ta);
  9.         f.pack();
  10.         f.setVisible(true);
  11.     }
  12.     class MyListener implements WindowListener
  13.     {
  14.         public void windowActivated(WindowEvent e)
  15.         {
  16.             ta.append("窗口被激活!/n");
  17.         }
  18.         public void windowClosed(WindowEvent e) 
  19.         {
  20.             ta.append("窗口被成功关闭!/n");
  21.         }
  22.         public void windowClosing(WindowEvent e) 
  23.         {
  24.             ta.append("用户试图关闭窗口!/n");
  25.             System.exit(0);
  26.         }
  27.         public void windowDeactivated(WindowEvent e) 
  28.         {
  29.             ta.append("窗口失去焦点!/n");
  30.         }
  31.         public void windowDeiconified(WindowEvent e) 
  32.         {
  33.             ta.append("窗口被恢复!/n");
  34.         }
  35.         public void windowIconified(WindowEvent e)
  36.         {
  37.             ta.append("窗口被最小化!/n");
  38.         }
  39.         public void windowOpened(WindowEvent e) 
  40.         {
  41.             ta.append("窗口初次被打开!/n");
  42.         }
  43.     }
  44.     public static void main(String[] args) 
  45.     {
  46.         new TestWindowListener().init();
  47.     }
  48. }
事件适配器--实现监听器接口,每个方法都提供了空方法。这样简化了代码。eg
  1. public class TestWindowAdapter
  2. {
  3.     private Frame f = new Frame("测试");
  4.     private TextArea ta = new TextArea(6 , 40);
  5.     public void init()
  6.     {
  7.         f.addWindowListener(new MyListener());
  8.         f.add(ta);
  9.         f.pack();
  10.         f.setVisible(true);
  11.     }
  12.     class MyListener extends WindowAdapter
  13.     {
  14.         public void windowClosing(WindowEvent e) 
  15.         {
  16.             ta.append("用户试图关闭窗口!/n");
  17.             System.exit(0);
  18.         }
  19.     }
  20.     public static void main(String[] args) 
  21.     {
  22.         new TestWindowAdapter().init();
  23.     }
  24. }

 

QGis二次开发 —— 5.2、基于qgis搭建离线地图服务并开发雷达扫描、无人机飞行跟踪等(附:源码及工程) 阅读详情

相关推荐

CLIP-Count代码配置以及踩坑记录

CLIP-Count代码配置以及踩坑记录

学术菜鸡 1011

JAVA GUI编程、JFrame框架、面板、常见组件

1.GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式: 1. 命令交互方式 图书管理系统 2. 图形交互方式 Java提供了专业的API用于开发图形用户界面 GUI--> Graphic User Interface 将要了解GUI API的框架结构,以及GUI组件以及组件之间的...

干饭银的足迹——博客 1万+

ubuntu 18.04 + Kimera slam 安装与demo测试

环境:opencv 3.4.12,其他的都是按照文档下载的。 首先进行组件的安装 一、Kimera-VIO 安装参考文档:https://github.com/MIT-SPARK/Kimera-VIO/blob/master/docs/kimera_vio_install.md 按照文档装就好,在安装过程中碰到如下问题: 0、make 过程很卡,不要用所有的核 1、cmake过程中卡下载 ORBvoc.zip ,手动下载这个文件,解压,将里面的3个文件,放到/Kimera-VIO/vocabu.

dna葡萄糖的博客 3627

python列表append()函数

python列表语法大全链接   append()函数 描述:在列表ls最后(末尾)添加一个元素object 语法:ls.append(object) -> None 无返回值 object —— 要添加的元素。可以添加 列表,字典,元组,集合,字符串等。程序示例:  ls1 = [1,2,3,4,5,6] ls2 = [1,2,3,4,5,6] ls1.append(12) ...

九天小牛 9万+

无刷电机FOC控制入门:磁场、洛伦兹力与坐标转换详解

本文深入解析无刷电机FOC(磁场定向控制)的核心原理,从电磁学基础的磁场与洛伦兹力出发,详细阐述了如何通过Clarke变换、Park变换等坐标转换技术,将三相交流解耦为直流量进行控制,最终利用SVPWM技术实现平滑、高效的电机驱动。文章旨在帮助开发者理解FOC的物理本质与数学框架,为机器人、无人机等高性能应用奠定基础。

weixin_29306011的博客 265

Github多人协作

最近有门课程需要几个人一起开发一个项目,此前我们基本都是单干的,多人合作意味着需要及时将我们每个人的代码进行合并,U盘传文件这种方式太慢了,效率不行,而且没法解决两个人同时修改一个文件的问题,这次我们就尝试使用Github来协助开发。下面就来记录一下这次开发遇到的一些问题和解决的方法。 Git的安装 从官网下载最新版按照默认安装即可。 此处不多加说明。 Git常用命令 在此放上一...

yzr1216的博客 1万+

append用法

#append() a = [] a.append(['A','B','C'])#给列表添加列表 a.append('a')#给列表添加字符串,字符串必须引号 a.append(5)#给列表添加整数,浮点都不用加引号,加引号就转换成字符串了 print(a) 运行结果为 [['A', 'B', 'C'], 'a', 5] ...

weixin_45085987的博客 2万+

【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏1(附项目源码)

当今,塔防游戏已经成为游戏市场上备受欢迎的一类游戏类型。《保卫萝卜》作为其中的经典之作,深受玩家喜爱。本项目旨在基于《保卫萝卜》的玩法和特点,开发一个Unity2D塔防游戏,让玩家可以在游戏中体验到精彩的策略对抗与刺激的关卡挑战。本项目将通过Unity引擎进行开发,利用2D游戏开发相关技术,包括但不限于精灵动画、碰撞检测、UI界面设计等。我们将实现萝卜作为关键角色的防守任务,并设计各种怪物和防御塔,使得游戏具有多样的战术策略和游戏乐趣。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4922

【社区图书馆】疯狂 Java 讲义:但凡种种,不一而足

疯狂Java讲义(第6版)(上下册)》是由著名IT畅销书作家李刚所著的关于Java语言的权威书籍。本书的新版本在原有基础上增加了更多实例和案例,使得读者更容易理解和掌握该编程语言。此书主要面向想要学习Java编程的初、中级程序员以及对编程有兴趣的人群。该书在国内外广受好评,是Java学习必备之书。这一段真的是太官方了,一般你随便看一个书籍介绍,基本都会来上这么一段风格的文章,不管书怎样,先氛围搞起来的意思。

我在山城重庆,我希望能为这片软件沙漠地带贡献自己的一滴水,Stay tuned! 1943

Bev算法在J5平台的部署

支持多种形式的Bev算法:ipmlss时序,以及基于transformer的gkt。

@bangbang的博客 845

2025年CSP-X初赛真题及答案解析(江西)(完善程序第1题)

2025年CSP-X初赛真题及答案解析(江西)(完善程序第1题)

王老师青少年编程 712

疯狂java讲义第6版_疯狂java讲义第6版

疯狂java讲义第6版下载!疯狂java讲义第6版pdf是李刚打造的经典java编程图书的最新版,为了帮助更多的读者能真正掌握Java编程,感受到Java语言的魅力,领会到Java编程的快乐,作者根据多年来的Java授课经验,精心编写了本书,喜欢可以下载阅读!疯狂java讲义第6版pdf简介《疯狂Java讲义》是李刚所著的一本图书!本书并不是一个简单的Java入门教材,也不是一门“闭门造车”式的J...

weixin_33726568的博客 3793

SolidWorks速成教程P4-4【装配体 | 第四节】——装配体内修改模型&编辑配合方法&配合报错的解决方法

截止目前已介绍完 SolidWorks装配体的常用功能,但基础薄弱的小伙伴或许对装配体的各类功能还不够熟悉。所以这节将进一步加强装配体的学习,同时介绍新手容易犯的错误。总结出三点,一是装配体内修改模型,二是编辑配合,三是配合报错的解决方法。

嵌入式阿齐Archie 5550

[笔记] 疯狂JAVA讲义(第3版)第11章 AWT编程

第11章 AWT编程 AWT(Abstract Window Toolkit),它是Sun最早提供的GUI库,这个库提供了一些基本功能。 后来又提供了Swing库。 11.1 GUI(图形用户界面)和AWT @Swing是建立在AWT基础上的,他的事件处理机制使用的是AWT的。 和AWT相关的类放在java.awt包及其子包中,AWT编程有两个基类:Component和MenuComponent。...

一只大鸽子的博客 639

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Java- AWT编程-学习笔记

Java- AWT编程-学习笔记 文章目录Java- AWT编程-学习笔记1.容器 Container2.布局管理器2.1 FlowLayout2.2 BorderLayout2.3 GridLayout2.4 GridBagLayout2.5 CardLayout2.6 绝对布局2.7 BoxLayout3. AWT 常用组件3.1 基本组件3.2 Dialog(对话框)4...

xhh22900的博客 664

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

java组件awt_[疯狂Java笔记]AWT:常用组件

1. 常用组件:1) 这里先不演示Canvas(画布,在后面绘图中会讲到)、Scrollbar(滚条)、ScrollPane|Panel|Frame(之前讲过了);2) 按钮类:i. Button:非常常见的单击按钮,Button(String Label); // 需要按钮上的文本标签ii. Checkbox:复选框;iii. CheckboxGroup:用该组件包裹复选框可使复选框边单选框;!...

weixin_42144201的博客 454

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

《疯狂java讲义》Java AWT图形化编程中文显示

java 桌面端应用开发

365

【Java】AWT和Swing概述

阿里伤透我心,疯狂复习刷题,终于喜提offer 哈哈~好啦,不闲扯了1、JAVA面试核心知识整理(PDF):包含JVMJAVA集合JAVA多线程并发,JAVA基础,Spring原理微服务,Netty与RPC,网络,日志,ZookeeperKafkaRabbitMQ,Hbase,MongoDB设计模式负载均衡数据库一致性哈希JAVA算法数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算共30个章节。2、Redis学习笔记及学习思维脑图。

a1901149的博客 1509

[疯狂Java笔记]AWT组件和容器的概念

1. 组件和容器:     1) 所有的图形元素都可以看成一个图形组件,比如一个按钮、编辑框,甚至是一个窗口都是一个图形组件,这里就简称组件;     2) 而容器在Java图形界面中是一种特殊的组件,顾名思义它就是用来存放其它组件的,比如上面所说的窗口就是一种容器组件,在它里面可以存放按钮、编辑框等组件,这些成为他的子组件;     3) 当然容器里也可以存放其它容器,即嵌套;

Lirx_Tech的专栏 1901

[疯狂Java]AWT:菜单栏、菜单、菜单项、菜单事件处理

1. 菜单栏、菜单、菜单项之间的关系:     1) 菜单栏(MenuBar)就是窗口中常见的顶层菜单栏,包含文件、编辑、格式等等子菜单的菜单条,即包含菜单的容器;     2) 菜单(Menu)是必定包含菜单项或者菜单(嵌套包含菜单,也叫子菜单)的容器;     3) 菜单项(MenuItem)即最小单位,即可以单击产生特效的菜单按钮,存在于菜单中的元素; !!注意:Menu是MenuI

Lirx_Tech的专栏 1万+

学习《疯狂Java讲义第4版》PDF+代码+课件+面试题分析

学习java选择了《疯狂java讲义》最新的第四版,用了两个多月时间看完,一边阅读,一边敲代码。对Java有了不少新的认识。书中实例清晰明了,讲解也是娓娓道来。Java可以编写图形桌面系统,可以编写游戏,可以操作文件系统,可以进行网络传输。案例能够讲解各种Java基础知识。有意思,能够理解一些知识,敲代码,运行代码,感受代码的魅力!继续努力,学习与实践相结合!读书与实践相结合! 《疯狂Java讲...

weixin_30270561的博客 5703

疯狂Java讲义第六版电子书:Java学习者的必备资源

疯狂Java讲义第六版电子书:Java学习者的必备资源 【下载地址】疯狂Java讲义第六版电子书 《疯狂Java讲义》第六版电子书资源,为Java学习者和爱好者提供详实的学习材料。本书全面覆盖Java基础知识、面向对象编程、高级特性及Java Web开发,适合自学或教学参考。下载后,可使用任何PDF阅读器查看,内容仅供个...

gitblog_06700的博客 1511

[疯狂Java笔记]事件处理:Java事件处理模型

1. Java事件处理三要素:     1) 事件源(Event Source):即事件发生的场所,就是指各个组件,如按钮等,点击按钮其实就是组件上发生的一个事件;     2) 事件(Event):事件封装了组件上发生的事情,比如按钮单击、按钮松开等等;     3) 事件监听器(Event Listener):负责监听事件源上发生的特定类型的事件,当事件到来时还必须负责处理相应的事件;

Lirx_Tech的专栏 9079

疯狂Java讲义第六版资源文件:Java学习者的必备工具

疯狂Java讲义第六版资源文件:Java学习者的必备工具 【下载地址】疯狂Java讲义第六版资源文件介绍 疯狂Java讲义第六版资源文件为Java学习者提供了全面的学习支持。该资源包含完整的示例代码、实践项目源码及配套教学视频,覆盖Java编程的各个方面,如基本语法、面向对象编程、异常处理、集合框架、多线程、网络编程和图...

gitblog_06792的博客 674

疯狂java讲义第七章课后习题答案

本章练习 1.定义一个长度为10的整数数组,可用于保存用户通过控制台输入的10个整数。并算它们的平均值、最大值、最小值。 2.将字符串"ABCDEFG”中的"CD”截取出来;再将"B"、"F"截取出来。 3.将A1B2C3D4E5F6G7H8拆分开来,并分别存入int[]和String[]数组。得到的结果为[1,2,3,4,5,6,78]和[AB,C,D,E,F,G,H]。 4.改写第4章练习中的五子棋游戏,通过正则表达式保证用户输入必须合法。 5.改写第4章练习中的五子棋游戏,为该程序增加国际化功能。

yaoguaiba579567的博客 2266
上一篇: 疯狂JAVA讲义---第十一章(上):AWT编程-布局管理器
下一篇: 疯狂JAVA讲义---第十一章(下):AWT编程-高级应用
terryzero
博客等级 码龄19年 700粉丝 232原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值