2016-04-01 23 views
-1

指示:JavaFXアプリケーションを作成する必要があります.Writeとラベルされたボタンが押されると、5つのint値1,2,3,4、および5、現在の時刻のDateオブジェクト、およびdouble値5.5を返します。 Exercise17_05.datという名前のファイルに保存します。次に、Exercise17_05.datを開いて、データを読み込んでコマンドウィンドウに表示するメソッドをプログラムに記述します。さらに、ボタンラベルReadを持っています。これを押すと、プログラムはExercise17_05.dat(書き込みによって作成された)の内容を読み込んで表示します。 TextAreaを使用して結果を表示し、テキストの色が青色で背景が灰色になるようにします。Javaファイルへのオブジェクトの保存

私は近づいているように感じていますが、「この式の対象タイプは機能 インターフェイスでなければなりません。 Javafxボックスはエラーのために開くことさえないので、私の進捗状況を本当に確認することはできません。どこで私は間違えましたか?

try(ObjectInputStream input = new ObjectInputStream(new FileInputStream("Exercise17_05.dat"));){ 

import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.ObjectOutputStream; 
import javafx.application.Application; 
import javafx.geometry.Insets; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.control.TextArea; 
import javafx.scene.layout.HBox; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 


public class module3 extends Application { 

public static void main(String[] args) { 
     launch(args); 
    } 

    @Override 
    public void start(Stage primaryStage) throws ClassNotFoundException, IOException { 

     // Text area 
     TextArea textArea = new TextArea(); 
     textArea.setStyle("-fx-background-color: lightgrey; -fx-text-fill: blue; -fx-control-inner-background: grey"); 
     textArea.setPadding(new Insets(15, 15, 15, 15)); 


     Button write = new Button("Write"); 
     write.setOnAction(e -> { 
      // Create an output stream for file 
      try(ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream("Exercise17_05.dat", true))) { 
       int[] numbers = {1, 2, 3, 4, 5}; 
       // Write to file 
       // 1. Write double 
       output.writeDouble(5.5); 
       // 2. Write int array object 
       output.writeObject(numbers); 
       // 3. Write date object 
       output.writeObject(new java.util.Date()); 
       // 4. Write utf string 
       output.writeUTF("Exercise17_05.dat"); 

      } catch(IOException exception) { 
       System.exit(0); 
      } 
     }); 



     Button read = new Button("Read"); 
     read.setOnAction(e -> { 

      //Create an input stream for file 
      ObjectInputStream in = new ObjectInputStream(new FileInputStream("Exercise17_05.dat")); 

      // Read from file 
       // 1. Read double 
      double doubleValue = input.readDouble(); 
      textArea.appendText("Double value: " + doubleValue); 
      // 2. Read int array object 
      int[] newNumbers = (int[]) (input.readObject()); 
      textArea.appendText("Integers: " + Arrays.toString(newNumbers)); 
      // 3. Read date object 
      Date date = (java.util.Date) (input.readObject()); 
      textArea.appendText("DateTime: " + date); 
      // 4. Read utf string 
      String fileName = input.readUTF();  


       } catch(IOException exception) { 
        System.exit(0); 
       } 


     HBox hButtons = new HBox(read, write); 
     VBox vProgram = new VBox(hButtons, textArea); 



    } 
} 
+0

"読み取り"アクションのコードは、その 'catch'と一緒に' try'をしていますか? – bradimus

+0

問題はどこで発生するのですか?投稿する前にコードを操作してください。read.setOnAction(e - > {'。 – Tom

答えて

0

変更ラインを

ObjectInputStream in = new ObjectInputStream(new FileInputStream("Exercise17_05.dat")); 

(トムズのコメントを参照してください、私はそれを投稿する前に、コードの操作に問題はなかったと思うが、私はこの実際にオリジナルを考えますコード)

これを実行した後で、いくつかの閉じ括弧が欠落していることがわかります(0キャッチブロック後の)

キャッチフレーズしてインポートする必要があります。

+0

catch 'ClassNotFoundException'?あなたは深刻ですか? –

関連する問題