⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 progressmonitorinputstreamtest.java

📁 java2核心技术卷二
💻 JAVA
字号:
/**
 * @version 1.00 1999-07-17
 * @author Cay Horstmann
 */

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;

public class ProgressMonitorInputStreamTest
{  public static void main(String[] args)
   {  JFrame frame = new TextFrame();
      frame.show();
   }
}

class TextFrame extends JFrame
   implements ActionListener
{  public TextFrame()
   {  setTitle("ProgressMonitorInputStreamTest");
      setSize(300, 200);
      addWindowListener(new WindowAdapter()
         {  public void windowClosing(WindowEvent e)
            {  System.exit(0);
            }
         } );

      Container contentPane = getContentPane();

      // this text area contains line counts and error messages
      textArea = new JTextArea();
      contentPane.add(new JScrollPane(textArea), "Center");

      // set up menu

      JMenuBar menuBar = new JMenuBar();
      setJMenuBar(menuBar);
      JMenu fileMenu = new JMenu("File");
      menuBar.add(fileMenu);
      openItem = new JMenuItem("Open");
      openItem.addActionListener(this);
      fileMenu.add(openItem);
      exitItem = new JMenuItem("Exit");
      exitItem.addActionListener(this);
      fileMenu.add(exitItem);
   }

   public void actionPerformed(ActionEvent evt)
   {  Object source = evt.getSource();
      if (source == openItem)
      {  // have user select file

         JFileChooser chooser = new JFileChooser();
         chooser.setCurrentDirectory(new File("."));
         chooser.setFileFilter(
            new javax.swing.filechooser.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)
            readFile(chooser.getSelectedFile());
      }
      else if (source == exitItem)
         System.exit(0);
   }

   public void readFile(final File f)
   {  /* important: the monitored activity must be in a new
         thread. We define a thread class on the fly; the thread
         action is in the run method
      */

      Thread readThread = new Thread()
      {  public void run()
         {  try
            {  // set up stream and reader filter sequence

               FileInputStream fileIn = new FileInputStream(f);
               ProgressMonitorInputStream progressIn
                  = new ProgressMonitorInputStream(TextFrame.this,
                     "Reading " + f.getName(), fileIn);
               InputStreamReader inReader
                  = new InputStreamReader(progressIn);
               BufferedReader in = new BufferedReader(inReader);

               // read file and count lines

               int count = 0;
               String line;
               while ((line = in.readLine()) != null)
                  count++;
               textArea.append(f + ": " + count + " lines\n");
               fileIn.close();
            }
            catch(IOException e)
            {  textArea.append("Error " + e + "\n");
            }
         }
      };

      readThread.start();
   }

   private JTextArea textArea;
   private JMenuItem openItem;
   private JMenuItem exitItem;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -