`
mylxiaoyi
  • 浏览: 328605 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

弹出窗口与选择器(三)

 
阅读更多

9.3 ProgressMonitorInputStream类

ProgressMonitorInputStream类表示一个输入流过滤器,这个输入流过滤器使用ProgressMonitor来检测一个输入流的读取。如果读取需要较长的时间完成,则会显示ProgressMonitor,且用户可以选择弹出窗口中的Cancel按钮,从而使得读取被中断并且输入流会抛出一个InterruptedIOException。

9.3.1 创建ProgressMonitorInputStream

类似于其他的过滤器流,ProgressMonitorInputStream是使用一个到需要过滤的流的引用来创建的。除了到这个过滤器的引用,ProgressMonitorInputStream的构造函数还需要其ProgressMonitor的两个参数:父组件以及一个消息。正如在这里所看到的,构造函数首先需要ProgressMonitor参数:

public ProgressMonitorInputStream(
  Component parentComponent, Object message, InputStream inputStream)

与JOptionPane与ProgressMonitor类似,消息参数是一个Object,而不是一个String,所以我们可以在多行上显示一个组件数组或是字符串。下面的代码创建了一个ProgressMonitorInputStream。

FileInputStream fis = new FileInputStream(filename);
ProgressMonitorInputStream pmis = 
  new ProgressMonitorInputStream(parent, "Reading " + filename, fis);

9.3.2 使用ProgressMonitorInputStream

与所有的输入流一样,一旦我们创建了ProgressMonitorInputStream,我们需要由其中进行读取。如果输入流的读取不够快,底层的ProgressMonitor会使得进程弹出窗口显示。一旦这个窗口显示,用户可以监视进程或是通过选择Cancel按钮关闭读取。如果Cancel按钮被选中,则InterruptedIOException会被抛出,而异常的bytesTransferred或会被设置为已经成功读取的字节数。

图9-7显示了一个ProgressMonitorInputStream弹出窗口的样子。略为不同的是,弹出窗口在消息区域使用两个JLabel组件,而不是一个。

Swing_9_17

列表9-6显示了完整的源代码示例。其中粗体显示的代码行是使用ProgressMonitorInputStream的关键。他们设置对话框的消息并且创建输入流。程序使用一个由命令行指定的文件名,读取文件,并且将文件拷贝到标准输出。如果文件足够大,进程监视器将会显示。如果我们按下Cancel按钮,读取停止,并且Canceled会被输出到标准错误。

package swingstudy.ch09;
 
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.InterruptedIOException;
 
import javax.swing.JLabel;
import javax.swing.ProgressMonitorInputStream;
 
public class ProgressInputSample {
 
	public static final int NORMAL = 0;
	public static final int BAD_FILE = 1;
	public static final int CANCELED = NORMAL;
	public static final int PROBLEM = 2;
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
 
		int returnValue = NORMAL;
		if(args.length != 1) {
			System.err.println("Usage:");
			System.err.println("java ProgressInputSample filename");
		}
		else {
			try {
				FileInputStream fis = new FileInputStream(args[0]);
				JLabel filenameLabel = new JLabel(args[0], JLabel.RIGHT);
				Object message[] = {"Reading:", filenameLabel};
				ProgressMonitorInputStream pmis = new ProgressMonitorInputStream(null, message, fis);
				InputStreamReader isr = new InputStreamReader(pmis);
				BufferedReader br = new BufferedReader(isr);
				String line;
				while((line = br.readLine()) != null) {
					System.out.println(line);
				}
				br.close();
			}
			catch(FileNotFoundException exception) {
				System.err.println("Bad File "+exception);
				returnValue = BAD_FILE;
			}
			catch(InterruptedIOException exception) {
				System.err.println("Canceled");
				returnValue = CANCELED;
			}
			catch(IOException exception) {
				System.err.println("I/O Exception "+exception);
				returnValue = PROBLEM;
			}
		}
		System.exit(returnValue);
	}
 
}

9.3.3 ProgressMonitorInputStream属性

表9-7显示了ProgressMonitorInputStream的属性。ProgressMonitor在输入流创建时创建。我们不需要修改ProgressMonitor。然而我们也许需要在弹出窗口显示之前提供一个或长或短的时延(ProgressMonitor的millisToDecideToPopup属性)。

Swing_table_9_9

分享到:
评论

相关推荐

    自定义弹出窗口

    自定义弹出窗口,正如其名,允许开发者根据需求设计并构建出与系统默认样式不同的对话框,提供更个性化的用户体验。在这里,我们将深入探讨如何创建和实现这样的功能。 首先,我们需要理解弹出窗口的基本概念。在...

    SIEMENS-西门子wincc弹出窗口怎么做?.txt

    在探讨如何在SIEMENS-西门子WinCC软件中创建弹出窗口之前,我们首先需要了解WinCC是什么以及它的一些基本概念。 ### WinCC简介 WinCC(Windows Control Center)是西门子公司开发的一款人机界面(HMI)与监控控制...

    asp.net mvc 弹出窗口 技巧

    1. **JavaScript与jQuery库**:在ASP.NET MVC中,通常会利用JavaScript和jQuery来实现前端交互,包括弹出窗口。jQuery库简化了DOM操作,使得创建和控制弹出窗口变得简单。 2. **Bootstrap Modal**:Bootstrap是广泛...

    js 自动弹出窗口 下来菜单效果

    在探讨“js自动弹出窗口下来菜单效果”的知识点时,我们不仅关注JavaScript代码本身,还应当深入了解其背后的逻辑与应用场景。这段代码展示了如何利用JavaScript创建一个动态下拉菜单,并在用户选择菜单项时自动打开...

    .NET弹出窗口总结

    总结一下,.NET框架提供了各种弹出窗口供开发者使用,包括简单的`MessageBox`、文件选择对话框、颜色和字体选择器,以及自定义的表单。通过灵活运用这些窗口,开发者可以构建出具有丰富用户交互的应用程序。了解并...

    很好用的模态弹出窗口,可自定义弹出窗口外观源码

    模态弹出窗口是一种覆盖在主页面上的对话框,用户必须先关闭弹出窗口才能继续与主页面交互。这种设计常用于显示警告、确认、输入表单等场景。在HTML和JavaScript中,通常使用`<div>`元素配合CSS样式实现,而在这个...

    jquery实现弹出窗口

    3. **jQuery 事件**:使用 jQuery 选择器和事件监听来控制弹出窗口的显示和关闭。例如: ```javascript $(document).ready(function() { var modal = $("#myModal"); // 当点击关闭按钮时关闭弹出窗口 $("....

    谷歌浏览器弹出窗口拦截取消的设置操作说明(1).docx

    ### 谷歌浏览器弹出窗口拦截取消的设置操作说明 #### 一、引言 在日常使用浏览器的过程中,我们可能会遇到一些网站自动弹出广告或者其他通知窗口的情况。虽然这些弹窗有时候会提供有用的信息或者服务,但很多时候...

    百度的弹出窗口

    在IT行业中,弹出窗口是一种常见的用户交互设计,它能够吸引用户的注意力或者提供额外的信息。在Web开发领域,JavaScript(Js)是实现这种功能的主要工具。"百度的弹出窗口"可能指的是百度搜索引擎或其相关服务中...

    弹出窗口灰色背景

    在`asyncbox.js`中,我们可以预期找到与弹出窗口相关的函数,比如打开和关闭窗口的逻辑,以及灰色背景的添加和移除。可能的函数名包括`showBox`、`hideBox`、`createMask`和`removeMask`等。此外,代码可能会使用...

    IE设置弹出窗口、安全站点

    ### IE浏览器设置详解:弹出窗口与安全站点配置 #### 一、引言 随着互联网技术的发展,浏览器作为用户接入互联网的重要工具之一,其安全性与便捷性显得尤为重要。Internet Explorer(简称IE)作为曾经占据市场主导...

    JQUERY 弹出窗口

    综上所述,"JQUERY 弹出窗口"是一个关于利用jQuery创建和管理弹出对话框或弹出层的实践主题,涉及到的基本知识点包括jQuery的选择器、DOM操作、显示/隐藏方法以及可能的CSS样式和动画效果。在实际开发中,理解并熟练...

    17、Jquery支持自定义弹出窗口插件

    本主题将深入探讨如何使用jQuery实现自定义弹出窗口插件,这对于创建交互式用户界面至关重要。 首先,我们需要理解什么是弹出窗口。弹出窗口通常是在主页面上覆盖一层半透明或全屏的元素,用来显示额外的信息、提示...

    jQuery点击按钮弹出窗口动画特效.zip

    4. **弹出窗口的创建与控制**:弹出窗口可能是一个模态对话框或者简单的div元素,通过CSS定位和jQuery的显示/隐藏方法控制其可见性。例如,`.show()`和`.hide()`方法用于控制元素的显示与隐藏,`.fadeIn()`和`....

    flex 弹出窗口选择,支持autocomplete功能

    在本文中,我们将深入探讨如何在Flex环境中实现一个具有autocomplete(自动补全)功能的弹出窗口选择器。Flex是一种基于ActionScript的开源框架,用于构建富互联网应用程序(RIA),它允许开发者创建交互性强、用户...

    Jquery弹出窗口,带例子参数说明 非常好用

    本篇文章将深入探讨 jQuery 中的弹出窗口功能,以及如何利用 AJAX 进行数据异步加载。我们将通过实例和参数说明来详细解释这一过程。 首先,jQuery 提供了多种弹出窗口的实现方式,如 `alert()`, `confirm()`, 和 `...

    页面右下角弹出窗口

    首先,我们需要一个隐藏的弹出窗口元素,通过选择器选取该元素,并将其初始状态设置为隐藏(如CSS样式`display: none;`)。 2. **事件绑定**:jQuery的`.on()`方法用于绑定事件监听器。在这里,我们可以监听用户的...

    CSS3 jQuery自定义弹出窗口

    在网页设计中,弹出窗口是一种常见的交互元素,用于显示通知、警告、确认信息或进行更复杂的用户交互。本文将深入探讨如何利用CSS3和jQuery来创建自定义弹出窗口,提升用户体验的同时,确保设计的灵活性和可扩展性。...

    实用弹出窗口组件

    6. **可访问性**:考虑到无障碍(Accessibility)需求,弹出窗口应遵循WCAG(Web Content Accessibility Guidelines)标准,确保键盘导航和屏幕阅读器的支持。 7. **关闭机制**:用户应能方便地关闭弹出窗口,这...

    多项选择列表弹出窗口.zip

    在多项选择列表弹出窗口中,JavaScript主要负责处理用户与界面的交互,如响应按钮点击事件、显示/隐藏弹出窗口、管理列表项的选中状态等。我们可以使用`addEventListener`方法监听按钮点击事件,然后使用`style....

Global site tag (gtag.js) - Google Analytics