• ベストアンサー

ProgressMonitorInputStreamの使い方

いろいろ調べてみたのですが、ProgressMonitorInputStreamの使い方が分かりません。インターネットからあるサンプルコードを見つけたのですが、ファイルを指定してもプログレスバーが表示されないのです。なぜなのかどうしても分からないので、質問しようと思いました。 コードは補足に載せています。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.2

160KB か……。ハードディスクは速いから数メガバイトでもたぶん一瞬で終わると思う。 補足のプログラムでフロッピーから 100KB ぐらいのファイルを読み込ませたら一応プログレスバーが出ました。(これでも 5 秒ぐらいしか掛かってない) ProgressMonitorInputStream の getProgressMonitor で ProgressMonitor を取得していろいろ設定を変えてみるといいかも

kamakuragengorou
質問者

お礼

ありがとうござます! ハードディスク早いですね~。あっという間でぜんぜんバーが出ないので、何かおかしいのかなと思ってしまいました。 なるほど。getProgressMonitorで設定変えてみます。ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.1

プログレスバーが表示されないのは単純にデータの読み込みがすぐに終わってしまっているからじゃない? ProgressMonitorInputStream のドキュメントには「しばらく時間がかかる場合には、ProgressDialog が表示され、ユーザに通知します。」とあるけど……。

kamakuragengorou
質問者

補足

ご返答ありがとうございます。 そうですかねぇ…160KBくらいのテキストを読み込みさせたのですが。 質問してすぐ補足でプログラム乗せようとしたのですが、できませんでした。すみませんでした。 これがコードです。 import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; public class ProgressMonitorInputStreamTest extends JFrame implements ActionListener { ProgressMonitor progress; JButton load; JTextField jtext; ProgressMonitorInputStreamTest(String title) { super(title); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container pane = getContentPane(); pane.setLayout(new FlowLayout()); // 読み込むファイルの名前を指定するための入力フィールド jtext = new JTextField(20); pane.add(jtext); // ファイルの読み込みを開始するための「Load」ボタン load = new JButton("Load"); load.addActionListener(this); pane.add(load); setVisible(true); } public void actionPerformed(ActionEvent ae) { if (ae.getSource() instanceof JButton) { // 「Load」ボタンが押されたら、新たにスレッドを生成して // メソッドreadFileを呼び出す Thread thread = new Thread() { public void run() { readFile(); } }; thread.start(); } } // 入力フィールドで指定されたファイルを読み込む private void readFile() { try { // ProgressMonitorInputStreamオブジェクトの生成 ProgressMonitorInputStream progressStream = new ProgressMonitorInputStream ( this,"Loading " + jtext.getText(),new FileInputStream(jtext.getText())); InputStream in = new BufferedInputStream(progressStream); int data; while((data = in.read()) != -1) { // ファイルの読み込み後の処理はここに記述する } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { ProgressMonitorInputStreamTest jpt = new ProgressMonitorInputStreamTest("Hello ProgressMonitorInputStream!"); } }

すると、全ての回答が全文表示されます。

関連するQ&A