Browse Source

MiWindow

master
Dani Minguet 2 years ago
commit
872d3b2925
12 changed files with 264 additions and 0 deletions
  1. +11
    -0
      .classpath
  2. +17
    -0
      .project
  3. +2
    -0
      .settings/org.eclipse.core.resources.prefs
  4. +14
    -0
      .settings/org.eclipse.jdt.core.prefs
  5. BIN
      GIF-MiWindow.gif
  6. +12
    -0
      README.md
  7. BIN
      bin/myWindows/com/daniminguet/es/MyWindow$1$1.class
  8. BIN
      bin/myWindows/com/daniminguet/es/MyWindow$1.class
  9. BIN
      bin/myWindows/com/daniminguet/es/MyWindow.class
  10. BIN
      jgoodies-forms-1.8.0-sources.jar
  11. BIN
      jgoodies-forms-1.8.0.jar
  12. +208
    -0
      src/myWindows/com/daniminguet/es/MyWindow.java

+ 11
- 0
.classpath View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src"/>
<classpathentry kind="lib" path="jgoodies-forms-1.8.0.jar" sourcepath="jgoodies-forms-1.8.0-sources.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

+ 17
- 0
.project View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>MyWindow</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

+ 2
- 0
.settings/org.eclipse.core.resources.prefs View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8

+ 14
- 0
.settings/org.eclipse.jdt.core.prefs View File

@ -0,0 +1,14 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=17
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=17

BIN
GIF-MiWindow.gif View File

Before After
Width: 600  |  Height: 338  |  Size: 171 KiB

+ 12
- 0
README.md View File

@ -0,0 +1,12 @@
#HACE UNA COPIA DE UN ARCHIVO DE ORIGEN PASADO POR PANTALLA A UNO DE DESTINO PASADO POR PANTALLA TAMBIÉN
He hecho las comprobaciones para ver si los archivos existen, en el caso del archivo de origen, que se pueda leer también, y en el caso del destino, que se pueda escribir en él si ya existe.
A la hora de copiar he usado el método "Thread.sleep()" para hacer una breve pausa entre datos copiados y
mostrar así la barra de progreso de manera correcta.
Una vez acabada la copia, se visualiza el contenido de ambos archivos para comprobar su correcto funcionamiento
RESULTADO:
![Running app](GIF-MiWindow.gif)

BIN
bin/myWindows/com/daniminguet/es/MyWindow$1$1.class View File


BIN
bin/myWindows/com/daniminguet/es/MyWindow$1.class View File


BIN
bin/myWindows/com/daniminguet/es/MyWindow.class View File


BIN
jgoodies-forms-1.8.0-sources.jar View File


BIN
jgoodies-forms-1.8.0.jar View File


+ 208
- 0
src/myWindows/com/daniminguet/es/MyWindow.java View File

@ -0,0 +1,208 @@
package myWindows.com.daniminguet.es;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import java.awt.BorderLayout;
import javax.swing.JMenuItem;
import java.awt.Button;
import javax.swing.JMenu;
import javax.swing.JEditorPane;
import javax.swing.JProgressBar;
import javax.swing.JTextField;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.awt.Panel;
import javax.swing.BoxLayout;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.SpringLayout;
import java.awt.GridLayout;
import java.awt.CardLayout;
import javax.swing.JComboBox;
import java.awt.FlowLayout;
import javax.swing.JButton;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormSpecs;
import com.jgoodies.forms.layout.RowSpec;
import javax.swing.JLabel;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.Color;
import javax.swing.Box;
import javax.swing.JTextArea;
import java.awt.TextArea;
import java.awt.Font;
public class MyWindow {
private JFrame frame;
private static TextField tfArchivoOrigen;
private static TextField tfArchivoDestino;
private static JButton btnBotonCopia;
private static JProgressBar pbBarraProgreso;
private static JLabel lblComprobacion;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MyWindow window = new MyWindow();
window.frame.setVisible(true);
btnBotonCopia.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
comprobarHacerCopia();
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public MyWindow() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
pbBarraProgreso = new JProgressBar();
pbBarraProgreso.setBounds(33, 179, 370, 40);
frame.getContentPane().add(pbBarraProgreso);
btnBotonCopia = new JButton("HACER COPIA");
btnBotonCopia.setBounds(33, 128, 150, 40);
frame.getContentPane().add(btnBotonCopia);
tfArchivoOrigen = new TextField();
tfArchivoOrigen.setFont(new Font("Dialog", Font.PLAIN, 16));
tfArchivoOrigen.setBounds(33, 26, 337, 32);
frame.getContentPane().add(tfArchivoOrigen);
tfArchivoOrigen.setBackground(new Color(255, 255, 255));
tfArchivoDestino = new TextField();
tfArchivoDestino.setFont(new Font("Dialog", Font.PLAIN, 16));
tfArchivoDestino.setBounds(33, 90, 337, 32);
frame.getContentPane().add(tfArchivoDestino);
JLabel lblDescripcionPrimerTF = new JLabel("Archivo de donde se quiere copiar:");
lblDescripcionPrimerTF.setFont(new Font("Tahoma", Font.PLAIN, 16));
lblDescripcionPrimerTF.setBounds(33, 0, 337, 20);
frame.getContentPane().add(lblDescripcionPrimerTF);
JLabel lblDescripcionSegundoTF = new JLabel("Archivo donde se copiará:");
lblDescripcionSegundoTF.setFont(new Font("Tahoma", Font.PLAIN, 16));
lblDescripcionSegundoTF.setBounds(33, 64, 337, 20);
frame.getContentPane().add(lblDescripcionSegundoTF);
lblComprobacion = new JLabel("");
lblComprobacion.setForeground(new Color(255, 0, 0));
lblComprobacion.setFont(new Font("Tahoma", Font.PLAIN, 16));
lblComprobacion.setBounds(33, 226, 370, 26);
frame.getContentPane().add(lblComprobacion);
}
public static void comprobarHacerCopia() {
//Comprueba que el TextField del archivo de origen no esté vacío, en ese caso, notificará el error
if(tfArchivoOrigen.getText().length() <= 0) {
lblComprobacion.setForeground(Color.RED);
lblComprobacion.setText("No se ha introducido ningún fichero de origen");
} else {
File ficheroOrigen = new File(tfArchivoOrigen.getText().toString());
try {
//Comprueba que el archivo de origen existe y se puede leer
if(ficheroOrigen.exists() && ficheroOrigen.canRead()) {
//Comprueba que el TextField del archivo de destino no esté vacío, en ese caso, notificará el error
if(tfArchivoDestino.getText().length() <= 0) {
lblComprobacion.setForeground(Color.RED);
lblComprobacion.setText("No se ha especificado el archivo de destino");
} else {
File ficheroDestino = new File(tfArchivoDestino.getText().toString());
//Si el archivo de destino existe y tiene permisos para escribir, sobreescribirá los datos
if(ficheroDestino.exists() && ficheroDestino.canWrite()) {
FileInputStream fisCopiar = new FileInputStream(ficheroOrigen);
FileOutputStream fosPegar = new FileOutputStream(ficheroDestino);
hacerCopia(fisCopiar, fosPegar);
fisCopiar.close();
fosPegar.close();
//Si el archivo de destino no existe, lo crea y escribe los datos
} else if (!ficheroDestino.exists()) {
ficheroDestino.createNewFile();
FileInputStream fisCopiar = new FileInputStream(ficheroOrigen);
FileOutputStream fosPegar = new FileOutputStream(ficheroDestino);
hacerCopia(fisCopiar, fosPegar);
fisCopiar.close();
fosPegar.close();
//Si el archivo de destino introducido no existe o no se puede modificar, notificará el error
} else {
lblComprobacion.setForeground(Color.RED);
lblComprobacion.setText("El fichero de destino no existe o no se puede escribir");
}
}
//Si el archivo de origen introducido no existe o no se puede leer, notificará el error
} else {
lblComprobacion.setForeground(Color.RED);
lblComprobacion.setText("El fichero de origen no existe o no se puede leer");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void hacerCopia(FileInputStream fisCopiar, FileOutputStream fosPegar) throws IOException {
lblComprobacion.setText("");
byte [] buf = fisCopiar.readAllBytes();
//Se inicializa la barra de progreso
pbBarraProgreso.setValue(0);
//Proceso de copia
try {
for(int i = 0; i < buf.length; i++) {
Thread.sleep(50);
fosPegar.write(buf[i]);
pbBarraProgreso.setValue(i);
pbBarraProgreso.update(pbBarraProgreso.getGraphics());
}
} catch (InterruptedException e) {
e.printStackTrace();
}
fosPegar.flush();
lblComprobacion.setForeground(Color.BLUE);
lblComprobacion.setText("Copia finalizada con éxito!");
}
}

Loading…
Cancel
Save