Browse Source

Obtener los datos del archivo serializado y mostrarlos por pantalla

master
Dani Minguet 2 years ago
parent
commit
601cb84f1f
8 changed files with 99 additions and 124 deletions
  1. +6
    -0
      .idea/vcs.xml
  2. +16
    -0
      README.md
  3. +58
    -5
      src/main/java/serializar/com/daniminguet/es/AplicacionPersona.java
  4. +19
    -15
      src/main/java/serializar/com/daniminguet/es/ControladorPersona.java
  5. +0
    -69
      src/main/java/serializar/com/daniminguet/es/HelloApplication.java
  6. +0
    -14
      src/main/java/serializar/com/daniminguet/es/HelloController.java
  7. +0
    -18
      src/main/resources/serializar/com/daniminguet/es/hello-view.fxml
  8. +0
    -3
      src/main/resources/serializar/com/daniminguet/es/person-list.fxml

+ 6
- 0
.idea/vcs.xml View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

+ 16
- 0
README.md View File

@ -0,0 +1,16 @@
# LEE LAS PERSONAS CREADAS DE UN ARCHIVO SERIALIZADO
No he podido mostrar las personas mediante la tabla, ya que me da un fallo en la carga del "fxmlLoader.load()" y no le he encontrado solución, por lo tanto las he escrito por pantalla.
De todas formas he dejado el código para crear las tablas con las personas comentado, para que no afecte en el funcionamiento.
He obtenido los array mediante el método "dataIS.readObject()".
Resultado:
```
Nombre: Juan Edad: 18
Nombre: Pepe Edad: 20
Nombre: Manolo Edad: 56
Nombre: Erom Edad: 78
```

+ 58
- 5
src/main/java/serializar/com/daniminguet/es/AplicacionPersona.java View File

@ -13,17 +13,22 @@ import javafx.scene.layout.VBox;
import javafx.stage.Stage; import javafx.stage.Stage;
import java.io.*; import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
public class AplicacionPersona extends Application { public class AplicacionPersona extends Application {
private static final File FICHERO = new File("C:\\Users\\Dani\\OneDrive\\Documentos\\AccesoADatos\\FichPersona.dat");
@Override @Override
public void start(Stage stage) throws IOException { public void start(Stage stage) throws IOException {
mostrarPersonasFichero();
/** Me da fallo en el "fxmlLoader.load()", por lo tanto no me inicia el progra ni puedo ver
* si se añaden las personas a la tabla
FXMLLoader fxmlLoader = new FXMLLoader(AplicacionPersona.class.getResource("person-list")); FXMLLoader fxmlLoader = new FXMLLoader(AplicacionPersona.class.getResource("person-list"));
//Scene scene = new Scene(fxmlLoader.load(), 320, 240);
Scene scene = new Scene(fxmlLoader.load(), 320, 240);
stage.setTitle("Datos personas"); stage.setTitle("Datos personas");
//stage.setScene(scene);
//stage.show();
stage.setScene(scene);
stage.show();
**/
} }
@Override @Override
@ -35,4 +40,52 @@ public class AplicacionPersona extends Application {
public void stop() throws Exception { public void stop() throws Exception {
System.out.println("stop() method: " + Thread.currentThread().getName()); System.out.println("stop() method: " + Thread.currentThread().getName());
} }
public void mostrarPersonasFichero() {
File fichero = new File("C:\\Users\\Dani\\OneDrive\\Documentos\\AccesoADatos\\Personas.dat");
FileInputStream filein = null;
try {
filein = new FileInputStream(fichero);
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
}
ObjectInputStream dataIS = null;
try {
dataIS = new ObjectInputStream(filein);
} catch (IOException ioe) {
}
String[] nombres;
int[] edades;
//Lee los datos del archivo
try {
nombres = (String[]) dataIS.readObject();
edades = (int[]) dataIS.readObject();
} catch (IOException e) {
throw new RuntimeException(e);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
//Se crea la lista que contendrá las personas
ArrayList<Persona> personas = new ArrayList<>();
//Se recorren los datos de las personas y se crean y añaden en la lista
for (int i = 0; i < nombres.length; i++) {
personas.add(new Persona(nombres[i], edades[i]));
}
//Se muestran las personas por pantalla
for (int i = 0; i < personas.size(); i++) {
System.out.println("Nombre: " + personas.get(i).getNombre() + "\t\tEdad: " + personas.get(i).getEdad());
}
try {
dataIS.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
} }

+ 19
- 15
src/main/java/serializar/com/daniminguet/es/ControladorPersona.java View File

@ -9,6 +9,7 @@ import javafx.scene.control.cell.PropertyValueFactory;
import java.io.*; import java.io.*;
import java.net.URL; import java.net.URL;
import java.util.ArrayList;
import java.util.ResourceBundle; import java.util.ResourceBundle;
public class ControladorPersona implements Initializable { public class ControladorPersona implements Initializable {
@ -21,8 +22,8 @@ public class ControladorPersona implements Initializable {
@Override @Override
public void initialize(URL url, ResourceBundle resourceBundle) { public void initialize(URL url, ResourceBundle resourceBundle) {
File fichero = new File("C:\\Users\\Dani\\OneDrive\\Documentos\\AccesoADatos\\FichPersona.dat");
Persona persona;
/**
File fichero = new File("C:\\Users\\Dani\\OneDrive\\Documentos\\AccesoADatos\\Personas.dat");
FileInputStream filein = null; FileInputStream filein = null;
try { try {
filein = new FileInputStream(fichero); filein = new FileInputStream(fichero);
@ -35,26 +36,29 @@ public class ControladorPersona implements Initializable {
} catch (IOException ioe) { } catch (IOException ioe) {
} }
try {
while (true) {
persona = (Persona) dataIS.readObject();
System.out.println(persona.getEdad());
System.out.println(persona.getNombre());
//nombrePersona.setCellValueFactory(new PropertyValueFactory<>("nombrePersona"));
//edadPersona.setCellValueFactory(new PropertyValueFactory<>("edadPersona"));
//tvData.setItems(FXCollections.observableArrayList(new Persona(persona.getNombre(), persona.getEdad())));
}
} catch (EOFException eofe) {
} catch (ClassNotFoundException cnfe) {
} catch (IOException ioe) {
String[] nombres;
int[] edades;
try {
nombres = (String[]) dataIS.readObject();
edades = (int[]) dataIS.readObject();
} catch (IOException e) {
throw new RuntimeException(e);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
nombrePersona.setCellValueFactory(new PropertyValueFactory<>("nombrePersona"));
edadPersona.setCellValueFactory(new PropertyValueFactory<>("edadPersona"));
for (int i = 0; i < nombres.length; i++) {
tvData.setItems(FXCollections.observableArrayList(new Persona(nombres[i], edades[i])));
} }
try { try {
dataIS.close(); dataIS.close();
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
**/
} }
} }

+ 0
- 69
src/main/java/serializar/com/daniminguet/es/HelloApplication.java View File

@ -1,69 +0,0 @@
package serializar.com.daniminguet.es;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import java.io.IOException;
public class HelloApplication extends Application {
@Override
public void start(Stage stage) throws IOException {
//Opción 1: crear la interfaz desde java
Label label = new Label("Pon tu nombre");
TextField textField = new TextField();
Button sayHelloBtn = new Button("Say Hello");
Button exitBtn = new Button("Exit");
Label message = new Label();
message.setStyle("-fx-text-fill: #ff002f");
sayHelloBtn.setOnAction(event -> {
String name = textField.getText();
if (name.trim().length() > 0) {
message.setText("Hola " + name);
} else {
message.setText("Hola !!");
}
});
exitBtn.setOnAction(e -> Platform.exit());
VBox root = new VBox();
root.setSpacing(5);
root.getChildren().addAll(label, textField, sayHelloBtn, exitBtn, message);
Scene scene = new Scene(root, 350, 150);
stage.setScene(scene);
stage.setTitle("Mi Aplicación");
stage.show();
/**
//Opción 2: utilizando plantillas FXML (Recomendado)
FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("hello-view.fxml"));
Scene scene = new Scene(fxmlLoader.load(), 320, 240);
stage.setTitle("Hello!");
stage.setScene(scene);
stage.show();
**/
}
@Override
public void init() throws Exception {
System.out.println("init() method: " + Thread.currentThread().getName());
}
@Override
public void stop() throws Exception {
System.out.println("stop() method: " + Thread.currentThread().getName());
}
public static void main(String[] args) {
launch();
}
}

+ 0
- 14
src/main/java/serializar/com/daniminguet/es/HelloController.java View File

@ -1,14 +0,0 @@
package serializar.com.daniminguet.es;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
public class HelloController {
@FXML
private Label welcomeText;
@FXML
protected void onHelloButtonClick() {
welcomeText.setText("Welcome to JavaFX Application!");
}
}

+ 0
- 18
src/main/resources/serializar/com/daniminguet/es/hello-view.fxml View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.CheckBox?>
<VBox alignment="CENTER" spacing="20.0" xmlns:fx="http://javafx.com/fxml"
fx:controller="serializar.com.daniminguet.es.HelloController">
<padding>
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0"/>
</padding>
<Label fx:id="welcomeText"/>
<Button text="Hello!" onAction="#onHelloButtonClick"/>
</VBox>

+ 0
- 3
src/main/resources/serializar/com/daniminguet/es/person-list.fxml View File

@ -21,8 +21,5 @@
<TableColumn fx:id="nombrePersona" prefWidth="75.0" text="Nombre de la persona" /> <TableColumn fx:id="nombrePersona" prefWidth="75.0" text="Nombre de la persona" />
<TableColumn fx:id="edadPersona" prefWidth="75.0" text="Edad de la persona" /> <TableColumn fx:id="edadPersona" prefWidth="75.0" text="Edad de la persona" />
</columns> </columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY"></TableView>
</columnResizePolicy>
</TableView> </TableView>
</GridPane> </GridPane>

Loading…
Cancel
Save