私は、ビデオストア内のレコードを管理するためのインターフェイスであるはずのnetbeansを使用してGUIプログラムを作成しています。ファイルからjTableにレコードをロードする方法は?
これはインターフェイスです。これは2つのタブで、一方はレコードを追加し、もう一方のタブはレコードを追加することができます。人がレコードを追加すると、その名前はoutputという名前の.datファイルに追加されます。 .datファイルをビデオ・レコードの永続的な記憶領域として使用したいと思います。基本的には、GUIクラスをロードすると、.datファイルからすべてのレコードがロードされます。コードを作成しましたが、次のエラーが表示されます。
run:
java.io.EOFException
at java.io.RandomAccessFile.readChar(RandomAccessFile.java:773)
at videostore.BinaryFile.getString(BinaryFile.java:82)
at videostore.BinaryFile.load(BinaryFile.java:116)
at videostore.VideoStore.main(VideoStore.java:409)
Exception in thread "main" java.lang.NullPointerException
at videostore.VideoStore.main(VideoStore.java:420)
/Users/(my Name)/Library/Caches/NetBeans/8.1/executor-snippets/run.xml:53: Java returned: 1
BUILD FAILED (total time: 2 seconds)
次に、関連するすべてのコードを貼り付けます。名前のGUIクラスのmainメソッドで
、 VideoStoreの.java: VideoStoreコンストラクタクラスのfile = new BinaryFile("/Users/hanaezz/Desktop/output.dat");
int length = file.length();
int ID = 1;
for (int xx = 0; xx < length; xx += file.getRecordLength()) {
Video load = file.load(xx);
String tempName = load.getVideoName();
String tempProd = load.getProducer();
String tempRat = load.getRating();
String tempGenre = load.getGenre();
short tempNum = load.getVidNum();
float tempPrice = load.getvideoPrice();
Object[] row = {ID, tempName, tempProd, tempGenre, tempRat, tempNum, tempPrice};
model.addRow(row);
ID++;
}
:
public VideoStore() {
initComponents();
model = (DefaultTableModel) displayVideos.getModel();
}
そしてBinaryFileクラス内:
private static final int RecordLength = 112;
public static Video load(int place){
String name = "", prod="", rat="", genre="";
float price = 1;
short number = 1;
try {
raf.seek(place);
name = getString(20);
prod = getString(15);
rat = getString(20);
genre = getString(10);
price = Float.parseFloat(getString(4));
number = Short.parseShort(getString(4));
writeString(20, name);
writeString(15, prod);
writeString(10, genre);
writeString(4, VideoStore.vPrice.getText());
writeString(4, VideoStore.vNumber.getText());
writeString(4, rat);
} catch (Exception e) {
e.printStackTrace();
}
Video r = new Video(name, prod, genre, rat, number, price);
return r;
}
public static int getRecordLength() throws IOException{
return RecordLength;
}
public static int length() throws IOException {
return (int)raf.length();
}
そして最後に、私のビデオクラス:
private static String videoName;
private static String producer;
private static String rating;
private static String genre;
private static short videoNumber;
private static float videoPrice;
public Video(String a, String b, String c, String d, short e, float f){
videoName = a;
producer = b;
rating = c;
genre = d;
videoNumber = e;
videoPrice = f;
}
...そして、クラス内の各変数のミューテータとアクセサメソッド...
@Override
public String toString(){
return videoName + "\t" + producer +
"\t" + rating + "\t" + genre +
"\t" + videoNumber + "\t" + videoPrice;
}
だからええ、私の問題があることですファイルからテーブルにレコードをロードする方法を理解できません。私のコードでは、レコードのサイズに基づいてファイル内の各レコードを繰り返し処理するループを使用しようとしましたが、うまく動作していないようです。誰かが私のフルコードを見たい、またはもっと情報が必要な場合は、私に連絡することを躊躇しないでください:)
は)(BinaryFile.java – SpringLearner
連結+ = raf.readCharに私たちの行番号82を示し; @SpringLearner –
すぐに役立つようにするには、[MCVE]または[ショート、自己完結型、正しい例](http://www.sscce.org/)を投稿してください。 –