swing体系:Java中用来做UI的一套API java.awt javax.swing JFrame:窗体 JPanel:面板 JLabel:文本标签和图片标签 JTextField:文本输入框 JPasswordField:密码输入框 JButton:按钮 JComboBox:下拉框 JCkeckBox:多选框 JRadioButton:单选按钮 JTextArea:多行文本框 JMenuBar JMenu JMenuItem 在创建菜单栏时,如果有"-"必须要进行判断 if(items[i][j].equals("-")){ menu.addSeparator(); }else{ JMenuItem item = new JMenuItem(items[i][j]); item.setActionCommand(commands[i][j]); menu.add(item); 事件:对于组件的任何一个操作:点击按钮,选中菜单项 鼠标移动,鼠标按下,键盘输入... 事件监听器:用来监听在某个组件上是否发生了对应的事件 事件源:发生事件的组件对象 常用的事件监听器:(接口) 动作监听器:ActionListener 鼠标按键监听器:MouseListener 鼠标移动监听器:MouseMotionListener 鼠标滚轮监听器:MouseWheelListener 键盘监听器:KeyListener FileInputStream FileOutputStream 1.如何定义事件监听器 2.如何区分每个菜单项 3,如何给菜单项绑定监听器 4.如何将UI中的对象传递给监听器 5,如何读写硬盘中的数据
简单实现读写的记事本, 技术点是swing,awt,io组件的综合应用,代码如下.;
package 监听器的练习0621; import java.awt.Color; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.ScrollPaneConstants; import javax.swing.border.LineBorder; public class Note extends JFrame{ public static void main(String[] args) { Note note = new Note(); note.init(); } public void init(){ this.setTitle("记事本"); this.setSize(500,500); this.setDefaultCloseOperation(3); this.setResizable(false); //创建多行文本 JTextArea area = new JTextArea(); //设置多行编辑区域的边框颜色 LineBorder border= new LineBorder(Color.BLACK); area.setBorder(border); //创建菜单栏 JMenuBar bar = new JMenuBar(); //创建监听器的对象 Notelisetener lis = new Notelisetener(area); //创建Menu String[] menus = { "文件(F)", "编辑(E)", "格式(O)", "查看(V)", "帮助(H)" }; //创建Item String[][] items = {{"新建", "打开", "保存", "另存为", "-", "页面设置", "打印", "-", "退出" }, { "撤销", "-", "剪切", "复制" }, {"txt"}, {"F1"}, {"F1"}}; //设置默认的标示 String[][] commands = {{ "newFile", "open", "save", "saveAs", "-", "pageSet", "print", "-", "exit" }, { "withDraw", "-", "cut", "copy" }, {"txt"}, {"f1"}, {"f1"} }; for(int i =0;i<menus.length;i++){ JMenu menu = new JMenu(menus[i]); bar.add(menu); for(int j = 0;j<items[i].length;j++){ if(items[i][j].equals("-")){ menu.addSeparator(); }else{ JMenuItem item = new JMenuItem(items[i][j]); item.setActionCommand(commands[i][j]); menu.add(item); //添加监听器 item.addActionListener(lis); } } } //将菜单栏增加到窗体上 this.setJMenuBar(bar); //设置滚动条将多行文本放入滚动条中 //创建滚动条的对象,将需要滚动条的组件传到滚动条的对象中 JScrollPane js = new JScrollPane(area); //设置上下滚动和水平滚动 js.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); js.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); this.add(js); this.setVisible(true); } }
package 监听器的练习0621; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import javax.swing.JTextArea; public class Notelisetener implements ActionListener { private JTextArea area; public Notelisetener(JTextArea area){ this.area = area; } @Override public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); if(command.equals("save")){ //获取文本区域内的内容 String str = area.getText(); String path = "C:\\Users\\Administrator\\Desktop\\文档.txt"; try { FileOutputStream fos =new FileOutputStream(path); byte[] bs =str.getBytes(); fos.write(bs); fos.flush(); fos.close(); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } }else if(command.equals("open")){ String path1 = "C:\\Users\\Administrator\\Desktop\\文档.txt"; try { FileInputStream fis = new FileInputStream(path1); //获取管道中流的长度 int len= fis.available(); byte[] by = new byte[len]; fis.read(by); String str = new String(by); area.setText(str); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } }
相关推荐
7. **技巧与最佳实践** - 使用Wireshark过滤表达式语法,提高数据包过滤效率。 - 在高流量环境下,启用包缓存以减少内存消耗。 - 定期导出捕获的数据包文件,以便后期分析或备份。 - 使用实时警报功能,对特定...
其中涉及到的激光器型号(例如He-Ne激光器)、频率范围(如650nm)以及电子元件的规格(例如SPCE061A芯片、LM386放大器)等具体技术参数,说明了激光窃听技术在硬件实现上对精确性和专业性的要求。 此外,文件中还...
从给定文件的信息来看,虽然标题提及的是“Python技术测试与调试技巧”,但在描述部分却提到了Matlab技术的相关内容,这显然存在一定的混淆。基于此,本篇内容将主要围绕Python技术测试与调试技巧进行深入探讨,同时...
具体使用技巧上,我们可以编写监听器类实现上述监听器接口。例如,一个在线统计的例子中,我们定义了一个类ONline,这个类实现了ServletContextListener、HttpSessionListener和HttpSessionAttributeListener接口。...
- **仲裁机制**:CAN总线使用非破坏性仲裁,节点在发送数据的同时监听总线,如果发现自己发送的ID比其他节点大,则立即停止发送,避免冲突。 2. **CAN总线特性**: - **高速性**:CAN总线最高波特率可达1Mbps,...
7. **诊断和故障排查**:`dynamic_listener01.TXT`和`dynamic_listener02.TXT`可能是监听器的日志文件,用于分析和解决连接问题。 8. **SSL/TLS加密**:现代环境中,监听器可能配置为使用SSL/TLS加密,以增强网络...
【标题】:“Excel使用技巧”通常指的是在Microsoft Excel这款电子表格软件中进行高效操作和数据分析的方法。Excel是商业环境中广泛使用的工具,它提供了强大的计算、图表制作、数据分析以及宏编程功能。以下是一些...
接下来,通过`lsnrctl start`命令启动监听器,监听器是Oracle数据库与客户端通信的关键组件,确保数据传输的正常进行。 第二种方法同样需要进入Oracle的安装目录,但是这次是以普通用户身份登录,然后切换到 `$...
2. **事件处理机制**:Android采用监听器的方式处理用户输入事件,如点击、触摸等,而Java中的Swing和AWT则主要依赖于事件监听模型。 3. **生命周期管理**:Android应用具有明确的生命周期,包括启动、暂停、停止和...
例如,在添加事件监听器时使用弱事件监听器,或者在使用Flex4的Spark框架时,利用partAdded()和partRemoved()方法来管理事件监听器的添加和移除。此外,建议优先使用Vector代替Array,并在适当的情况下消除子表达式...
5. **知识盲区与使用技巧** - **Android Studio技巧**:快捷键、Gradle构建的理解、调试技巧等,提高开发效率。 - **动画与过渡效果**:理解Property Animation和View Animation,创建动态UI。 - **自定义View**...
- **事件处理**:为元素绑定事件监听器,以便在特定的用户交互时触发相应的JavaScript代码。 ##### 2. 异步编程 JavaScript是一种单线程语言,这意味着一次只能执行一个任务。然而,通过异步编程技术,可以实现在...
总结,这份"键盘记录器"源码集合不仅展示了VC开发工具的使用技巧,还涵盖了Windows API调用、错误处理、多线程、调试、代码组织和版本控制等多个方面的知识点。通过深入学习和实践,开发者可以增强自己的编程能力,...
《网络扫描技术揭秘:原理、实践与扫描器的实现》是一部深入探讨网络安全领域的专著,主要聚焦于网络扫描这一核心技术。网络扫描是网络安全评估和漏洞发现的重要手段,它通过主动或被动的方式探测网络中的设备、服务...
本书从DBA的角度阐述了...性能篇深入分析了Statspack等常用的调整工具的原理与使用方法、判断依据,并从锁、内存、索引、执行计划等各个角度介绍了各种优化技巧;网络篇主要介绍了监听器、透明网关、数据迁移等方面的
3. **过滤器与监听器**:这两者是JavaWeb中的重要组件,过滤器可以对请求和响应进行预处理和后处理,监听器则可以监控应用中发生的特定事件。书中会阐述它们的用法和实现,如字符编码过滤器、登录验证过滤器等。 4....
4. 运行测试计划,并通过查看结果树监听器观察响应数据,从而检查HTTP请求的具体内容。 #### JMeter分布式测试 当需要模拟大量并发用户访问时,单台计算机的资源限制可能会成为瓶颈。为此,JMeter支持分布式测试,...
7. **实验与测试**:在实际环境中测试发射器和监听器的性能,记录数据,评估通信距离、清晰度和稳定性。 8. **硬件与软件集成**:可能涉及微控制器或嵌入式系统,将硬件电路与控制软件结合,实现自动化操作和参数...