エディタやワープロでやるように,ファイルの一覧を出してその中からファイルを選択するようにします。
JFileChooser
を使います。
SanTak.java に書き加えます
前回の構成
public SanTaku(){ setDefaultCloseOperation(EXIT_ON_CLOSE); m = new Mondaishuu("mondai.txt",10 ); label1 = new JLabel("問題 "+(n+1),JLabel.LEFT); //nは0から問題番号は1から
今回の構成
public SanTakuF(){ setDefaultCloseOperation(EXIT_ON_CLOSE); JFileChooser chooser = new JFileChooser("."); int retVal = chooser.showOpenDialog(this); if (retVal != JFileChooser.APPROVE_OPTION) System.exit(0); File file = chooser.getSelectedFile(); String fname = file.getPath(); m = new Mondaishuu(fname,10); label1 = new JLabel("問題 "+(n+1),JLabel.LEFT); //nは0から問題番号は1から
なかにFileクラスを使っているので、次のパッケージをインポートする必要があります。
import java.io.*;
いつものように実行します。
$ javac SanTakuF.java $ java SanTakuF
最初にファイルの選択画面がでます。mondai.txtなどを選択します。
選択すると問題が始まります。
もしも問題の形式になっていないファイルを選択すると、うまく動かないはずです。ほんとうはそのような場合にファイルの形式が間違っているというメッセージがでて、選択しなおすとか、停止するとかの対策が必用です。
SanTakuF.javaについてもjarにすることをやってみます。
(1)SanTakuF.javaをコンパイルすると、SanTakuF.class ができます。この他にSanTakuF.javaの実行にはMondaishuu.classとToi.classが必要です。この3つを(2)のマニフェストファイルと一緒にまとめます。
(2)次の内容のテキストファイルを作り、適当なファイル名で保存します。この例ではSanTakuF.txtとしました。このファイルをマニフェストファイルと呼びます。
Main-Class: SanTakuF
この中の SanTakuFは実行するmainを含むクラス名です。いままで 「 java クラス名 」 で実行していたクラス名を書きます。
最後は必ず改行します。(Linuxでは改行しなくても大丈夫)
(3)jarコマンドで次のように命令します。
$ jar cvfm SanTakuF.jar SanTakuF.txt SanTakuF.class Mondaishuu.class Toi.class
次のような意味です。
SanTakuFで名前を揃えているのはわかりやすいようにであってMain-Class:の名前があっていれば他は違う名前でもかまいません。
以下のように表示され SanTakuF.jar というファイルができます。
$ jar cvfm SanTakuF.jar SanTakuF.txt SanTakuF.class Mondaishuu.class Toi.class マニフェストが追加されました。 SanTakuF.class を追加中です。(入 = 3907) (出 = 2146)(45% 収縮されました) Mondaishuu.class を追加中です。(入 = 2628) (出 = 1586)(39% 収縮されました) Toi.class を追加中です。(入 = 286) (出 = 212)(25% 収縮されました) $
(4)SanTakuF.jarをダブルクリックすると実行できます。
やはり最初はファイルの選択になります。
聖愛高等学校