Beruflich Dokumente
Kultur Dokumente
import java.util.Scanner;
import java.io.File;
if (lista != null) {
for (File elemento : lista) {
if (elemento.isDirectory()) {
buscar (argFichero, elemento);
} else if
(argFichero.equalsIgnoreCase(elemento.getName())) {
System.out.println (elemento.getParentFile());
}
}
}
}
}
Si lo que quieres es que el programa muestre sólo la ruta, sin incluir el nombre del fichero,
modifica esta linea:
1
System.out.println (elemento.getAbsoluteFile());
Hoy un artículo sencillo pero de mucha utilidad. Como bien sabéis, dependiendo del
sistema operativo que estemos utilizando en Java, las rutas de los ficheros (llamados path)
se crean de diferente forma. Veamos como podemos crear la ruta de un fichero con Java.
Así cuando vayamos a crear la ruta de un fichero con Java para un sistema operativo
Windows pondremos:
c:\midirectorio\mifichero.txt
/midirectorio/mifichero.txt
Es por ello que tenemos que tener especial cuidado en construir la ruta del fichero en
nuestro programa Java. Para poder resolver esto tenemos varias alternativas. La primera
sería chequeando las propiedades del sistema "os.name" y "file.separator" con
.getProperty().
1. String so = System.getProperty("os.name");
2. String separador = System.getProperty("file.separator");
Hay que tener un poco de cuidado con la versión de Java que utilices, ya que File.separator
solo está disponible desde Java 5.
Ejemplo 3: Programa que muestra el contenido de un directorio. En el ejemplo se
muestra el contenido del directorio actual.
public static void main(String[] args) {
File directorio = new File("."); //directorio actual
String[] lista = directorio.list();
for (int i = 0; i < lista.length; i++) {
System.out.println(lista[i]);
}
}
//Eliminar un fichero
System.out.println("Introduce el nombre del fichero a eliminar: ");
nombre = sc.nextLine();
File f = new File(nombre);
if(f.exists()){
System.out.println(f.getAbsolutePath());
if(f.delete()){
System.out.println("Fichero eliminado");
} else{
System.out.println("No se ha podido eliminar");
}
} else{
System.out.println("El fichero " + f.getAbsolutePath() + " no existe");
}
import java.io.File;
import java.io.IOException;
MÉTODOS
Algunos métodos de la clase File son los siguientes:
MÉTODO DESCRIPCIÓN
boolean canRead() Devuelve true si se puede leer el fichero
boolean canWrite() Devuelve true si se puede escribir en el fichero
boolean createNewFile() Crea el fichero asociado al objeto File. Devuelve true
si se ha podido crear. Para poder crearlo el fichero
no debe existir. Lanza una excepción del tipo
IOException.
boolean delete() Elimina el fichero o directorio. Si es un directorio
debe estar vacío. Devuelve true si se ha podido
eliminar.
boolean exists() Devuelve true si el fichero o directorio existe
String getName() Devuelve el nombre del fichero o directorio
String getAbsolutePath() Devuelve la ruta absoluta asociada al objeto File.
String getCanonicalPath() Devuelve la ruta única absoluta asociada al objeto
File. Puede haber varias rutas absolutas asociadas a
un File pero solo una única ruta canónica. Lanza una
excepción del tipo IOException.
String getPath() Devuelve la ruta con la que se creó el objeto File.
Puede ser relativa o no.
String getParent() Devuelve un String conteniendo el directorio padre
del File. Devuelve null si no tiene directorio padre.
File getParentFile() Devuelve un objeto File conteniendo el directorio
padre del File. Devuelve null si no tiene directorio
padre.
boolean isAbsolute() Devuelve true si es una ruta absoluta
boolean isDirectory() Devuelve true si es un directorio válido
boolean isFile() Devuelve true si es un fichero válido
long lastModified() Devuelve un valor en milisegundos que representa la
última vez que se ha modificado (medido desde las
00:00:00 GMT, del 1 de Enero de 1970). Devuelve 0
si el fichero no existe o ha ocurrido un error.
long length() Devuelve el tamaño en bytes del fichero. Devuelve 0
si no existe. Devuelve un valor indeterminado si es
un directorio.
String[] list() Devuelve un array de String con el nombre de los
archivos y directorios que contiene el directorio
indicado en el objeto File. Si no es un directorio
devuelve null. Si el directorio está vacío devuelve un
array vacío.
String[] list(FilenameFilter Similar al anterior. Devuelve un array de String con
filtro) el nombre de los archivos y directorios que contiene
el directorio indicado en el objeto File que cumplen
con el filtro indicado.
boolean mkdir() Crea el directorio. Devuelve true si se ha podido
crear.
boolean mkdirs() Crea el directorio incluyendo los directorios no
existentes especificados en la ruta padre del
directorio a crear. Devuelve true si se ha creado el
directorio y los directorios no existentes de la ruta
padre.
boolean renameTo(File dest) Cambia el nombre del fichero por el indicado en el
parámetro dest. Devuelve true si se ha realizado el
cambio.
http://puntocomnoesunlenguaje.blogspot.com/2013/05/clase-file-java.html
http://acodigo.blogspot.com/2014/09/buscar-y-abrir-archivos-
jfilechooser.html
EVENTOS EN JTABLE
A continuación vamos a enlazar el evento clicked en un JTable, para ello usaremos una función que
se encargará de setear el JTable enlazándolo con el evento Clicked del Mouse y recibirá como
parámetro el JTable correspondiente.
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
/**
*
* @author beastieux
*/
public class Ejm05_EventoMouseClickedJTable extends JFrame {
public Ejm05_EventoMouseClickedJTable()
{
//Llenamos el modelo
dtmEjemplo = new DefaultTableModel(getFilas(),
getColumnas());
tblEjemplo.setModel(dtmEjemplo);
scpEjemplo.add(tblEjemplo);
this.add(scpEjemplo);
this.setSize(500, 200);
scpEjemplo.setViewportView(tblEjemplo);
setEventoMouseClicked(tblEjemplo);
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
}
@Override
public void mouseClicked(MouseEvent e) {
tblEjemploMouseClicked(e);
}
});
}
String cadena="";
JOptionPane.showMessageDialog(null, cadena);
}
Estas líneas de código nos permite ejecutar una acción cuando se realiza el evento click en
Java, en este caso estoy poniendo a una jTable en el evento MouseListener que oiga el
evento mouseClicked.
En el caso que se haga un click se imprima el mensaje “Se ha hecho un click” y en el caso
que se haya hecho dos click el mensaje respectivo a este.
Cabe mencionar que este evento se le puede añadir a otros objetos no solo al jTable, si no
tambien a otros elementos, jbutton, jlabel, etc…
table.addMouseListener(new java.awt.event.MouseAdapter() {
if(e.getClickCount()==1){
if(e.getClickCount()==2){
}
Este post está orientado a la aplicación e implementación de un fragmento de
código JAVA, que nos permitirá seleccionar un registro de nuestra tabla
(JTable), y posteriormente mostrarlo con detalle en cada campo (jTextField,
ComboBox, jTextArea, etc...) de nuestro formulario JAVA:
int filaseleccionada;
try{
filaseleccionada= tblDatos.getSelectedRow();
if (filaseleccionada==-1){
}else{
DefaultTableModel modelotabla=(DefaultTableModel)
tblDatos.getModel();
String
codigo=(String)modelotabla.getValueAt(filaseleccionada, 0);
String nombres=(String)
modelotabla.getValueAt(filaseleccionada, 1);
String
apellidos=(String)modelotabla.getValueAt(filaseleccionada, 2);
String
email=(String)modelotabla.getValueAt(filaseleccionada, 3);
String
celular=(String)modelotabla.getValueAt(filaseleccionada, 4);
String
direccion=(String)modelotabla.getValueAt(filaseleccionada, 5);
String
ciudad=(String)modelotabla.getValueAt(filaseleccionada, 6);
txtNombrecontacto.setText(nombres);
txtApellidoscontacto.setText(apellidos);
txtEmail.setText(email);
txtCelular.setText(celular);
txtDireccion.setText(direccion);
cboxCiudad.setSelectedItem(ciudad);
JOptionPane.showMessageDialog(null, "Error:
"+ex+"\nInténtelo nuevamente", " .::Error En la Operacion::."
,JOptionPane.ERROR_MESSAGE);
}
}
/* Cut image */
BufferedImage bi = ImageIO.read(imageFile);
BufferedImage cutImage = bi.getSubimage(x, y, width, height);
/* Scale image */
Image scaledImage = originalImage.getScaledInstance(50, 50,
Image.SCALE_SMOOTH);
BufferedImage bufferedScaled = new
BufferedImage(scaledImage.getWidth(null), scaledImage.getHeight(null),
BufferedImage.TYPE_INT_RGB);
bufferedScaled.getGraphics().drawImage(scaledImage, 0, 0, null);
La explicación del código la tenéis puesta en forma de comentarios dentro del mismo.
Como podéis observar, he hecho una cosa que no había explicado hasta el momento: la
clase Usuario no tiene main. Esto es debido a que los objetos usuario los declararé dentro
de la clase Caja_Fuerte. La clase Caja_Fuerte, si que tendrá un main, principalmente para
crear un nuevo objeto caja_fuerte y para llevar la cuenta del saldo que posee cada usuario
dentro de la caja fuerte.
Esto es todo por hoy. Como siempre os digo, si tenéis alguna duda, dejad un comentario,
aunque si no tenéis ninguna, también podéis escribir. ¡Nos vemos en el próximo tutorial!
This, Clases Java
Hay ocasiones en las que resulta útil referirse al objeto desde el que se está ejecutando un método. En esas
ocasiones se puede usar la referencia especial de objeto this, pero cuidado, siempre dentro de un método no
estático.
Esta referencia se suele usar para pasar una referencia al objeto actual como un parámetro para otros métodos.
La siguiente llamada añadiría el objeto a una relación de publicaciones prestadas:
Se usa this cuando un atributo está oculto por una declaración de variable o parámetro. Por ejemplo:
En el segundo constructor titulo y autor están ocultos por los parámetros con el mismo nombre. Para
garantizar que accedemos al campo adecuado en lugar de al parámetro del método, le colocamos el
prefijo this
Convertir un array de caracteres en un String
El array de caracteres:
1. System.out.println(String.valueOf(miarray));
Hola !:
Lo primero q tienes q haces es declarar un arreglo de caracteres con el tamaño de la cadena esto
seria algo asi:
Char cadena_caracteres [] = new Char[cadena.length()];
Enseguida haces :
cadena_caracteres = cadena.toCharArray[];
Y eso es todo accesas como al arreglo de forma normal como lo haces con Java ejemplo
Lees una cadena : "HOLA"
Su tamaño es 4
y cuando haces el cadena.toCharArray()
lo q haces es :
cadena_caracteres[0]='H'
cadena_caracteres[0]=O'
cadena_caracteres[0]='L'
cadena_caracteres[0]='A'
import java.awt.Rectangle;
import java.awt.print.PageFormat;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.List;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.util.PDFTextStripperByArea;
if (ficheros == null)//EXCEPCION
System.out.println("No hay archivos en la carpeta especificada");
else {
for (int x=0;x<ficheros.length;x++){//RECORREMOS EL ARREGLO CON LOS
NOMBRES DE ARCHIVO
String ruta=new String();//VARIABLE QUE DETERMINARA LA RUTA DEL
ARCHIVO A LEER.
ruta=("d:\\carpeta\\"+ficheros[x]); //SE ALMACENA LA RUTA DEL ARCHIVO A
LEER.
try {
PDDocument pd = PDDocument.load(ruta); //CARGAR EL PDF
List l = pd.getDocumentCatalog().getAllPages();//NUMERO LAS PAGINAS
DEL ARCHIVO
Object[] obj = l.toArray();//METO EN UN OBJETO LA LISTA DE PAGINAS
PARA MANIPULARLA
PDPage page = (PDPage) obj[0];//PAGE ES LA PAGINA 1 DE LA QUE
CONSTA EL ARCHIVO
PageFormat pageFormat = pd.getPageFormat(0);//PROPIEDADES DE LA
PAGINA (FORMATO)
Double d1 = new Double(pageFormat.getHeight());//ALTO
Double d2 = new Double(pageFormat.getWidth());//ANCHO
int width = d1.intValue();//ANCHO
int eigth=1024;//ALTO
Puedes buscar en la documentación del lenguaje la clase Color y verás todos los que puedes
utilizar además del que aquí ves (yellow). Aparte de esto puedes expresar el color como una
combinación de los componentes principales de los colores(Red, Green, Blue : RGB) de esta
manera (aunque hay otras) :
boton.setForeground(new Color(132,192,199));
Los valores pueden variar de 0 a 255. En este caso Red = 132, Green = 192, Blue = 199.
Hola Jonathan
Para cambiar el color de texto en Java es muy simple solo tienes que llamar el metodo
setForeground(color);
JLabel.setForeground(Color.red);
JTextField.setForeground(Color.red);
import javax.swing.ImageIcon;
import javax.swing.JPanel;
/**
*
* Clase que extiende de JPanel y permite poner una imagen como fondo.
*
* @author Guille Rodriguez Gonzalez ( http://www.driverlandia.com )
* @version 1.0 | 05-2014
*
*/
// Metodo que es llamado automaticamente por la maquina virtual Java cada vez que repinta
public void paintComponent(Graphics g) {
super.paintComponent(g);
}
Ahora cuando vayamos a crear un nuevo JPanel simplemente cambiamos JPanel por
JPanelBackground (nombre que le he dado a esta clase) y le ponemos un background. Podemos
ponerle un GIF animado, JPG, PNG… pero cuidado con poner imagenes de demasiada resolucion
(6000x…) porque depende en que maquina se ejecute puede tardar mas o menos en hacer el
repintado.
Enseñando a Kanon
jLabel1.setBackground(Color.green);
jLabel1.setForeground(Color.red);
Espero te sirva...
Ya hemos visto como introducir una imagen en un proyecto Java, ahora veremos como
podemos hacer que luzca en nuestro proyecto. Para ello vamos a realizar 2 clases:
1. Una clase que herede de la clase JPanel para poder modificarla a nuestro gusto.
2. Una clase que herede de la clase JFrame y donde nuestra imagen será mostrada.
Primera clase
Bien, esta sería la primera clase que deberíamos tener, ahora bien, esta clase por si sola no
muestra nada, ni siquiera tiene un MAIN, debemos crear otra para mostrar nuestra imagen
en una ventana.
Segunda Clase:
o Creamos una clase que herede de JFrame.
o En la MAIN creamos un objeto de esta misma clase:
Fondo f=new Fondo();
o Le damos un tamaño:
f.setSize(400,300);
o Lo hacemos visible:
f.setVisible(true);
o Creamos un objeto de la clase que hicimos anteriormente, en mi caso se
llamaba "Panel", y le pasamos la url de nuestra imagen:
panel p=new Panel("/imagenes/fondo.jpg")
o Es muy importante que empiece con una barra, así le indicamos que está
dentro de "src", y es muy importante también que indiquemos el nombre
del archivo.
o Finalmente añadimos el objeto de Panel a la Frame:
f.add(p);
o Y ya está, si hemos seguido bien todos los pasos os deberá de quedar una
bonita ventana con una imagen de fondo
ACTUALIZAR EL FONDO DEL JPANEL
Como veis ya no le paso la url por constructor, si no que por medio de un "set" le
establezco el valor que va a tener url, aquí es donde más pifias he visto, ya que la gente
suele introducir la url por constructor, y al intentar refrescar el panel, se le vuelve a crear un
nuevo panel, con lo cual resulta un poco fastidioso.
Vamos a volver a la clase anterior, donde tenemos nuestra JFrame, y modificamos nuestro
JPanel, en vez de poner JPanel, le ponemos Panel para que nos cargue nuestra clase:
Así es como he dejado yo el Panel, lo he creado, le he pasado la url de mi imagen al Panel,
le he puesto un borde con titulo, la posición del Panel, y agregarlo.
Hecho esto, agregamos un evento al botón para que cuando se pulse nos cambie nuestra
imagen de fondo:
Y ya está, si habéis hecho bien los pasos, os debería de cambiar la imagen de fondo al
pulsar el botón.
Aquí mi resultado:
GUARDAR IMÁGENES INSERTAR IMÁGENES EN JAVA
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
lbl.setBounds(10,10,200,20);
getContentPane().add(lbl);
lbl.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
lbl.setSize(400,400);
//Hay que escalar la imagen
ImageIcon icon = new ImageIcon(new ImageIcon("imagen.jpg").getImage().getSc... 400,
Image.SCALE_DEFAULT));
lbl.setIcon(icon);
}
});
}
public static void main(String[]args){
new Imagen();
}
}
Código Fuente:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Alumno
*/
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
// Etablish connection
HttpURLConnection connection = (HttpURLConnection)
url.openConnection();
// Get method
connection.setRequestMethod("GET");
// Set User-Agent to "mimic" the behavior of a web browser. In
this
// example, I used my browser's info
connection.addRequestProperty("User-Agent", USER_AGENT);
connection.connect();
// Get content
BufferedInputStream bufIn =
new BufferedInputStream(connection.getInputStream());
byte[] buffer = new byte[1024];
int n;
ByteArrayOutputStream bufOut = new ByteArrayOutputStream();
while ((n = bufIn.read(buffer)) > 0) {
bufOut.write(buffer, 0, n);
}
META-INF/MANIFEST.MF
javazoom.jl.converter.Converter.java
javazoom.jl.converter.RiffFile.java
javazoom.jl.converter.WaveFile.java
javazoom.jl.converter.WaveFileObuffer.java
javazoom.jl.converter.jlc.java
javazoom.jl.decoder.BitReserve.java
javazoom.jl.decoder.Bitstream.java
javazoom.jl.decoder.BitstreamErrors.java
javazoom.jl.decoder.BitstreamException.java
javazoom.jl.decoder.Control.java
javazoom.jl.decoder.Crc16.java
javazoom.jl.decoder.Decoder.java
javazoom.jl.decoder.DecoderErrors.java
javazoom.jl.decoder.DecoderException.java
javazoom.jl.decoder.Equalizer.java
javazoom.jl.decoder.FrameDecoder.java
javazoom.jl.decoder.Header.java
javazoom.jl.decoder.InputStreamSource.java
javazoom.jl.decoder.JavaLayerError.java
javazoom.jl.decoder.JavaLayerErrors.java
javazoom.jl.decoder.JavaLayerException.java
javazoom.jl.decoder.JavaLayerHook.java
javazoom.jl.decoder.JavaLayerUtils.java
javazoom.jl.decoder.LayerIDecoder.java
javazoom.jl.decoder.LayerIIDecoder.java
javazoom.jl.decoder.LayerIIIDecoder.java
javazoom.jl.decoder.Manager.java
javazoom.jl.decoder.Obuffer.java
javazoom.jl.decoder.OutputChannels.java
javazoom.jl.decoder.SampleBuffer.java
javazoom.jl.decoder.Source.java
javazoom.jl.decoder.SynthesisFilter.java
javazoom.jl.decoder.huffcodetab.java
javazoom.jl.player.AudioDevice.java
javazoom.jl.player.AudioDeviceBase.java
javazoom.jl.player.AudioDeviceFactory.java
javazoom.jl.player.FactoryRegistry.java
javazoom.jl.player.JavaSoundAudioDevice.java
javazoom.jl.player.JavaSoundAudioDeviceFactory.java
javazoom.jl.player.NullAudioDevice.java
javazoom.jl.player.Player.java
javazoom.jl.player.PlayerApplet.java
javazoom.jl.player.advanced.AdvancedPlayer.java
javazoom.jl.player.advanced.PlaybackEvent.java
javazoom.jl.player.advanced.PlaybackListener.java
javazoom.jl.player.advanced.jlap.java
javazoom.jl.player.jlp.java
javazoom/jl/decoder/au2lin.ser
javazoom/jl/decoder/l3reorder.ser
javazoom/jl/decoder/lin2au.ser
javazoom/jl/decoder/sfd.ser
Reproducir un archivo MP3 en Java usando JLayer
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.Player;
try {
FileInputStream fis;
Player player;
fis = new FileInputStream(
"D:\\Users\\Public\\Music\\Sample Music\\Sleep
Away.mp3");
BufferedInputStream bis = new BufferedInputStream(fis);
Para ello vamos a utilizar la librería JLayer, que es capaz de decodificar, convertir y reproducir
archivos MP3 en tiempo real. Esta librería se puede encontrar en
http://www.javazoom.net/javalayer/sources.html . Debemos descargar y descomprimir el archivo
comprimido (zip o tar.gz) para obtener el archivo jl1.0.jar (podemos descargarnos alguna versión
más moderna si existiese), que es el que nos interesa.
Hay que incluir ese archivo jar en nuestro proyecto: si utilizamos el IDE Eclipse lo haremos
pinchando con el botón derecho sobre la carpeta del proyecto; pinchamos en Propiedades; opción
"Java Build Path"; pestaña Librerías; finalmente pulsamos en "Add External JAR" y seleccionamos
el archivo jl1.0.jar .