package com.gaohao.test;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
import javax.swing.JFileChooser;
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.ProgressMonitorInputStream;
import javax.swing.filechooser.FileFilter;
public class ProgressMonitorInputStreamTest {
public static void main(String[] args){
JFrame frame = new TextFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class TextFrame extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
public TextFrame(){
setTitle("ProgressMonitorInputStreamTest");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu fileMenu = new JMenu("File");
menuBar.add(fileMenu);
openItem = new JMenuItem("Open");
openItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
try{
openFile();
}catch(IOException e){
e.printStackTrace();
}
}
});
fileMenu.add(openItem);
exitItem = new JMenuItem("Exit");
exitItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
fileMenu.add(exitItem);
}
public void openFile() throws IOException{
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));
chooser.setFileFilter(new FileFilter(){
public boolean accept(File f){
String fname = f.getName().toLowerCase();
return fname.endsWith(".txt") || f.isDirectory();
}
public String getDescription(){
return "Text Files";
}
});
int r = chooser.showOpenDialog(this);
if(r != JFileChooser.APPROVE_OPTION)return;
final File f = chooser.getSelectedFile();
FileInputStream fileIn = new FileInputStream(f);
ProgressMonitorInputStream progressIn = new ProgressMonitorInputStream(this,"Reading " + f.getName(),fileIn);
final Scanner in = new Scanner(progressIn);
Runnable readRunnable = new Runnable(){
public void run(){
final JTextArea textArea = new JTextArea();
while(in.hasNextLine()){
String line = in.nextLine();
textArea.append(line);
textArea.append("\n");
}
in.close();
EventQueue.invokeLater(new Runnable(){
public void run(){
setContentPane(new JScrollPane(textArea));
validate();
}
});
}
};
Thread readThread = new Thread(readRunnable);
readThread.start();
}
private JMenuItem openItem;
private JMenuItem exitItem;
public static final int DEFAULT_WIDTH = 300;
public static final int DEFAULT_HEIGHT = 200;
}
分享到:
相关推荐
通过以上分析,我们可以看到 Java 提供了强大的工具和类库来帮助开发者轻松地创建用户友好的进度监视器。本文介绍的 `ProgressMonitor` 是一种简单而有效的方法,可以在不干扰主界面的情况下显示任务进度。此外,...
3. **WatchService API**:Java 7引入了WatchService API,它可以监视文件系统的变更事件。通过注册监听器,当日志文件有新的内容添加时,我们可以得到通知。 4. **第三方库如Log4j或Logback**:这些流行的日志框架...
在Java编程中,实现监视任务进度条是一种常见需求,特别是在执行长时间运行的操作或者批量处理大量数据时,为用户提供实时进度反馈能显著提升用户体验。本文将深入探讨如何在Java中实现这样的功能。 首先,我们需要...
通过以上步骤,你可以创建一个基本的Java进度条。当然,实际应用中可能需要根据具体需求进行调整,例如添加取消操作、显示任务信息等。总的来说,Java提供了丰富的工具和API来实现任务进度条,无论是简单的控制台...
在实现进度条时,我们可以使用Java API中的Swing图形用户界面组件,创建一个进度监视器类,用于跟踪操作的进度信息,并将其显示在一个带有进度条的对话框中。同时,我们还可以使用多线程设计模式,创建一个独立的...
在Java编程中,实现文件复制并伴随进度条提示是一项实用的功能,特别是在处理大文件时,为了提高用户体验,进度条能够显示文件复制的进度,让用户了解操作的预计完成时间。以下是一个详细步骤,介绍如何在Java中实现...
1. **ProgressMonitorInputStream**: 这个类是`java.io.InputStream`的子类,它添加了一个进度监视器的功能。通过构造函数,我们可以传入一个`ProgressMonitor`实例以及要读取的文件。`ProgressMonitorInputStream`...
Java Swing组件实现进度监视功能示例是Java中基于Swing组件实现进度条显示功能的详细分析和示例,主要介绍了如何使用Java Swing组件来实现进度监视功能,包括创建进度对话框、模拟耗时任务、进度条显示、取消操作等...
7 3内部类实例做监视器 7 4按钮与标签 7 4 1标签组件 7 4 2按钮组件 7 5菜单项 7 6文本区 7 6 1TextArea类主要方法 7 6 2文本区上的TextEvent事件 7 7面板 7 7 1Panel类 7 7 2ScrollPane类 7 8布局 7 8 1FlowLayout...
在实际应用中,开发者或用户可以通过`ParforProgMon.m`脚本在MATLAB中启动`PARFORProgressMonitor`,然后在并行运行`PARFOR`循环时,监视器会实时更新进度条或者输出进度信息,帮助优化代码性能,调试问题,以及提升...
Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java...
此进度条(进度监视器)旨在监控长 parfor 循环执行期间的进度。 它使用基于 Java 的客户端/服务器架构工作,这意味着它支持分布式工作池(即不仅适用于本地池)。 用法: 首先创建一个并行池。 然后构造一个 ...
学生提问:构造器是创建Java对象的途径,是不是说构造器完全负责创建Java对象? 141 5.5.2 构造器的重载 142 学生提问:为什么要用this来调用另一个重载的构造器?我把另一个构造器里的代码复制、粘贴到这个构造器...
通道可以与缓冲区(Buffer)交互,而选择器则可以监视多个通道,当通道准备就绪时进行读写操作。在大量文件操作或高并发环境下,NIO能提供更好的性能。 3. **网络编程**:Java的Socket和ServerSocket类是网络通信的...
最后,`java`目录可能包含与进度监视器图形用户界面相关的Java类文件,因为MATLAB可以利用Java API来构建复杂的GUI。这些类可能涉及到界面组件的创建、事件监听以及与MATLAB主线程的交互。 总结起来,"matlab开发-...
6.5.2 进度监视器 6.5.3 监视输入流的进度 6.6 构件组织器 6.6.1 分割面板 6.6.2 选项卡面板 6.6.3 桌面面板和内部框体 6.6.4 级联与平铺 6.6.5 否决属性设置 第七章 高级 AWT 7.1 绘图操作流程 7.2 形状 7.2.1 ...
2. **实时监视器**:实时监视器是一种软件应用,它可以实时捕获并显示特定事件的数据,例如这里的投票情况。在SOVoteMonitor中,它可能通过API与Stack Overflow的服务器交互,获取最新的投票数据,并实时更新显示。 ...
Parfor进度监控器基于Java的Matlab类,用于在parfor循环期间进行进度监视用法首先创建一个并行池。 然后构造一个ParforProgMon对象: ppm = ParforProgMon(strWindowTitle, nNumIterations <, nProgressStepSize,...