Sie sind auf Seite 1von 35

BUSCAR ARCHIVOS EN JAVA

import java.util.Scanner;
import java.io.File;

public class BuscarFichero {

public static void main (String[] args) {


BuscarFichero objBuscarFichero = new BuscarFichero();
Scanner entrada = new Scanner(System.in);
String fichero = "";
String directorio = "";

System.out.print ("Ingrese el nombre del fichero:\nfichero = " );


fichero = entrada.next();
System.out.print ("\nDirectorio de inicio de la
busqueda:\ndirectorio = ");
directorio = entrada.next();
System.out.println();
objBuscarFichero.buscar (fichero, new File(directorio));
}

public void buscar (String argFichero, File argFile) {


File[] lista = argFile.listFiles();

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());

Por esta otra:


1
System.out.println (elemento.getParentFile());
Crear la ruta de un fichero con Java

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

Mientras que si estamos en un sistema Linux utilizaremos:

/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");

En el caso de "os.name" obtenemos el nombre del sistema operativo y en el caso de


"file.separator" obtenemos el separador de directorios. Así, montar nuestra ruta de un
fichero sería:

1. sPath = separador + sDirectorio + separador + sFichero;


2. System.out.println(sPath);

Pero, si no queremos consultar las propiedades del sistema, tenemos la constante


File.separator. La cual tiene almacenado el separador de directorios del sistema operativo
sobre el que nos ejecutemos. De esta forma construir la ruta de un fichero se haría de la
siguiente manera:

1. String sPath = File.separator + sDirectorio + File.separator +


sFichero;
2. System.out.println(sPath);

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]);
}
}

Ejemplo 2: El siguiente programa muestra como eliminar un fichero y como cambiar


el nombre de un fichero usando la clase File.
import java.io.File;
import java.util.Scanner;
public class File3 {

public static void main(String[] args) {


Scanner sc = new Scanner(System.in);
String nombre;

//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");
}

//Cambiar el nombre de un fichero


String nuevoNombre;
System.out.println("Introduce el nombre del fichero a renombrar: ");
nombre = sc.nextLine();
File f1 = new File(nombre);
if(f1.exists()){
System.out.println(f1.getAbsolutePath());
System.out.println("Introduce nuevo nombre: ");
nuevoNombre = sc.nextLine();
File f2 = new File(nuevoNombre);
if(f1.renameTo(f2)){
System.out.println("Se ha cambiado el nombre");
} else{
System.out.println("No se ha podido cambiar el nombre");
}
} else{
System.out.println("El fichero " + f1.getAbsolutePath() + " no existe");
}
}
}

Ejemplo 1: El siguiente programa muestra el uso de algunos métodos de la clase File.


Se crea un objeto File ruta asociado al directorio c:/ficheros y un objeto File f asociado
al fichero datos.txt que se encuentra en ese directorio.
Si el fichero no existe se crea y si el directorio no existe se crea y a continuación se
crea el fichero. Si el fichero existe se muestra el tamaño del mismo.

import java.io.File;
import java.io.IOException;

public class File2 {

public static void main(String[] args) throws IOException {


File ruta = new File("c:/ficheros");
File f = new File(ruta, "datos.txt");
System.out.println(f.getAbsolutePath());
System.out.println(f.getParent());
System.out.println(ruta.getAbsolutePath());
System.out.println(ruta.getParent());
if (!f.exists()) { //se comprueba si el fichero existe o no
System.out.println("Fichero " + f.getName() + " no existe");
if (!ruta.exists()) { //se comprueba si la ruta existe o no
System.out.println("El directorio " + ruta.getName() + " no existe");
if (ruta.mkdir()) { //se crea la ruta. Si se ha creado correctamente
System.out.println("Directorio creado");
if (f.createNewFile()) { //se crea el fichero. Si se ha creado
correctamente
System.out.println("Fichero " + f.getName() + " creado");
} else {
System.out.println("No se ha podido crear " + f.getName());
}
} else {
System.out.println("No se ha podido crear " + ruta.getName());
}
} else { //si la ruta existe creamos el fichero
if (f.createNewFile()) {
System.out.println("Fichero " + f.getName() + " creado");
} else {
System.out.println("No se ha podido crear " + f.getName());
}
}
} else { //el fichero existe. Mostramos el tamaño
System.out.println("Fichero " + f.getName() + " existe");
System.out.println("Tamaño " + f.length() + " bytes");
}
}
}

Si suponemos que no existe el fichero ni el directorio la ejecución del programa


produce la siguiente salida:
c:\ficheros\datos.txt
c:\ficheros
c:\ficheros
c:\
Fichero datos.txt no existe
El directorio ficheros no existe
Directorio creado
Fichero datos.txt creado
Si volvemos a ejecutar el programa después de crear la ruta y el fichero, se muestra:
c:\ficheros\datos.txt
c:\ficheros
c:\ficheros
c:\
Fichero datos.txt existe
Tamaño 0 bytes

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 {

private JTable tblEjemplo;


private JScrollPane scpEjemplo;
private DefaultTableModel dtmEjemplo;

public Ejm05_EventoMouseClickedJTable()
{

tblEjemplo = new JTable();


scpEjemplo= new JScrollPane();

//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);
}

//Datos de las filas


private Object[][] getFilas()
{
Object fila[][]=new Object[][] {
{"a1", "b1", "c1", "d1"},
{"a2", "b2", "c2", "d2"},
{"a3", "b3", "c3", "d3"}};
return fila;
}
//Encabezados de la tabla
private String[] getColumnas()
{
String columna[]=new String[]{"A","B","C", "D"};
return columna;
}

private void setEventoMouseClicked(JTable tbl)


{
tbl.addMouseListener(new java.awt.event.MouseAdapter() {

@Override
public void mouseClicked(MouseEvent e) {
tblEjemploMouseClicked(e);
}
});
}

private void tblEjemploMouseClicked(java.awt.event.MouseEvent evt) {

String cadena="";

int row = tblEjemplo.rowAtPoint(evt.getPoint());


if (row >= 0 && tblEjemplo.isEnabled())
{
for (int i=0; i < tblEjemplo.getColumnCount();i++)
{
cadena=cadena + " " +
dtmEjemplo.getValueAt(row,i).toString();
}
}

JOptionPane.showMessageDialog(null, cadena);
}

public static void main(String args[]) {


Ejm05_EventoMouseClickedJTable obj = new
Ejm05_EventoMouseClickedJTable();
obj.setVisible(true);
}
}
Doble click en Java dentro de una jTable u otro elemento

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() {

public void mouseClicked(java.awt.event.MouseEvent e) {

if(e.getClickCount()==1){

System.out.println("Se ha hecho un click");

if(e.getClickCount()==2){

System.out.println("Se ha hecho doble click");

}
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:

private void btnVerActionPerformed(java.awt.event.ActionEvent evt) {

int filaseleccionada;

try{

filaseleccionada= tblDatos.getSelectedRow();

if (filaseleccionada==-1){

JOptionPane.showMessageDialog(null, "No se ha seleccionado


ninguna fila");

}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);

}catch (HeadlessException ex){

JOptionPane.showMessageDialog(null, "Error:
"+ex+"\nInténtelo nuevamente", " .::Error En la Operacion::."
,JOptionPane.ERROR_MESSAGE);

}
}

Jugando con imágenes en Java

Pasos sencillos para implementar algunas manipulaciones de imágenes con Java.

1. Recortar una parte de la imagen

/* Cut image */
BufferedImage bi = ImageIO.read(imageFile);
BufferedImage cutImage = bi.getSubimage(x, y, width, height);

2. Escalar una imagen

/* 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);

3. Cambiar la paleta de colores de la imagen

/* Usa 1 bit para colores (2 colores máximo) y 6 posibles colores */


IndexColorModel cm = new IndexColorModel(1, 6,
new byte[] {-100, 0, 0, 0, -1, 0 }, // rojo
new byte[] {0, -100, 60, 0, -1, 0 }, // verde
new byte[] {0, 0, 0, -100, -1, 0 }); // azul
BufferedImage img = new BufferedImage(image.getWidth(),
image.getHeight(), BufferedImage.TYPE_BYTE_INDEXED, cm);
Graphics2D g2 = img.createGraphics();
g2.drawImage(image, 0, 0, null);
g2.dispose();

4. Crear una imagen pixel a pixel

BufferedImage newImage = new BufferedImage(width, height,


BufferedImage.TYPE_INT_RGB);
... /* Iterar por la matriz de píxeles */
newImage.setRGB(j, i, pixel.getValue());
...
ImageIO.write(newImage, "PNG", destFile);
APRENDIENDO CLASES CON JANA

En la clase Usuario, declararemos métodos y constructores que utilizaremos posteriormente


dentro de la clase Caja_Fuerte:
package dinero;
public class Usuario {
private String nombre;
private int dinero;
public Usuario(String nombre) {
this.nombre=nombre;
//Inicializamos la cantidad de dinero de cada uno a 0
dinero=0;
}
public void Guardar(int din) {
//Introducimos dinero en la caja fuerte
dinero=dinero+din;
}
public void Sacar(int din) {
//Sacamos dinero de la caja fuerte
dinero=dinero-din;
}
public int ReturnDinero() {
//Return del dinero que se encuentra dentro de la caja fuerte
return dinero;
}
public void Mostrar_Datos() {
System.out.println(nombre+" tiene "+dinero+" Euros dentro de la caja
fuerte.");
}
}
Todo esto lo usaremos en la clase Caja_Fuerte(), la cual crearemos a continuación:
package dinero;
public class Caja_Fuerte {
//Creamos cuatro objetos de la clase Usuario para poder trabajar con
ellos
private Usuario user1, user2, user3, user4;
public Caja_Fuerte() {
//Definimos 4 usuarios de la caja fuerte
user1=new Usuario("Julio");
user2=new Usuario("Irene");
user3=new Usuario("Mario");
user4=new Usuario("Merche");
}
public void Actualizar() {
/*
* Aquí usamos la clase Usuario
*/
//Julio introduce 75 Euros
user1.Guardar (75);
//Irene introduce 50 Euros
user2.Guardar (50);
//Mario guarda 205 Euros
user3.Guardar (205);
//Julio saca 15 Euros
user1.Sacar(15);
//Merche guarda 40 Euros
user4.Guardar (40);
//Irene guarda 20 Euros
user2.Guardar(20);
//Merche saca 40 Euros
user4.Sacar(40);
}
public void dinerototal ()
{
//Calculamos el total que hay dentro de la caja
int total = user1.ReturnDinero() + user2.ReturnDinero() +
user3.ReturnDinero()+user4.ReturnDinero();
//Lo mostramos por pantalla
System.out.println ("En la caja fuerte hay: " + total+" Euros.");
System.out.println();
//Mostramos los datos individuales de cada usuario de la caja fuerte
user1.Mostrar_Datos();
user2.Mostrar_Datos();
user3.Mostrar_Datos();
user4.Mostrar_Datos();
}
public static void main(String[] ar) {
//Dentro del main, creamos un objeto caja_fuerte de la clase Caja_Fuerte
Caja_Fuerte caja_fuerte=new Caja_Fuerte();
//Realizamos los movimientos de cada usuario dentro de la caja fuerte
caja_fuerte.Actualizar();
//Calculamos el total en la caja fuerte y,
//también el total de cada usuario de manera individual
caja_fuerte.dinerototal();
}
}

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

En el ejemplo Convertir un array en un String con Java veíamos el procedimiento a seguir


para coger un array de String y convertirlo en una cadena. Pero, si el array que estamos
manejando es de caracteres en vez de String, el procedimiento será mucho más sencillo.

El array de caracteres:

1. char miarray[] = {'A','V','I','L','A'};

Ahora utilizamos el método .valueOf() de la clase String pasando el array de caracteres


como parámetro:

1. System.out.println(String.valueOf(miarray));

Y ya tenemos convertir el array de caracteres en un String

Pasar String a Arreglo de Caracteres

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'

char[] cadena_caracteres = cadena.toCharArray();


Leer contenido de un PDF y extraerlo a un TXT con el mismo
nombre.

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;

public class LeerPdf {

public static void main(String[] args) {


LeerPdf leerPDF =new LeerPdf();
leerPDF.lecturaPDF();
}

public void lecturaPDF(){


String ln = System.getProperty("line.separator");
File dir = new File("d:\\carpeta");//CREO UN OBJETO CON TODOS LOS
ARCHIVOS QUE CONTIENE LA CARPETA QUE CONTIENE LOS PDFS.
String[] ficheros = dir.list();//ARREGLO QUE ALMACENARÁ TODOS LOS
NOMBRES DE LOS ARCHIVOS QUE ESTAN DENTRO DEL OBJETO.

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

PDFTextStripperByArea stripper = new


PDFTextStripperByArea();//COMPONENTE PARA ACCESO AL TEXTO
Rectangle rect = new Rectangle(0, 0, width, eigth);//DEFNIR AREA DONDE
SE BUSCARA EL TEXTO
stripper.addRegion("area1", rect);//REGISTRAMOS LA REGION CON UN
NOMBRE
stripper.extractRegions(page);//EXTRAE TEXTO DEL AREA

String contenido = new String();//CONTENIDO = A LO QUE CONTENGA EL


AREA O REGION
contenido=(rect+stripper.getTextForRegion("area1"));

File archivo=new File(ficheros[x]+".txt");//CREAMOS ARCHIVO CON


NOMBRE ORIGINAL PERO EN TXT
BufferedWriter writer = new BufferedWriter(new
FileWriter(archivo));//CREAMOS EL ESCRITOR
writer.write(ruta);//IMPRIMIMOS LA RUTA
writer.write(contenido);//IMPRIMIMOS EL CONTENIDO
writer.close();//CERRAMOS EL ESCRITOR

pd.close();//CERRAMOS OBJETO ACROBAT


} catch (IOException e) {
if(e.toString()!=null){
File archivo=new File("dañado_"+ficheros[x]+".txt");//SEPARA LOS
DAÑADOS
}
System.out.println("Archivo dañado "+ficheros[x]);// INDICA EN CONSOLA
CUALES SON LOS DAÑADOS
e.printStackTrace();
}//CATCH
}//FOR
}//ELSE
}//LECTURAPDF()
}//CLASS

CAMIAR EL COLOR DE LAS LETRAS EN JAVA

Tan sencillo como :


boton.setForeground(Color.yellow);

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.

RE:Color detexto Java


Publicado por Jack (18 intervenciones) el 18/04/2010 02:02:35

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);

asi seria para poner la letras rojas en un campo de texto o en un etiqueta


Valora esta respuesta

JAVA – Añadir background a JPanel


import java.awt.Graphics;
import java.awt.Image;

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
*
*/

public class JPanelBackground extends JPanel {

// Atributo que guardara la imagen de Background que le pasemos.


private Image background;

// Metodo que es llamado automaticamente por la maquina virtual Java cada vez que repinta
public void paintComponent(Graphics g) {

/* Obtenemos el tamaño del panel para hacer que se ajuste a este


cada vez que redimensionemos la ventana y se lo pasamos al drawImage */
int width = this.getSize().width;
int height = this.getSize().height;

// Mandamos que pinte la imagen en el panel


if (this.background != null) {
g.drawImage(this.background, 0, 0, width, height, null);
}

super.paintComponent(g);
}

// Metodo donde le pasaremos la dirección de la imagen a cargar.


public void setBackground(String imagePath) {
// Construimos la imagen y se la asignamos al atributo background.
this.setOpaque(false);
this.background = new ImageIcon(imagePath).getImage();
repaint();
}

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

Cambiar color de fondo:

jLabel1.setBackground(Color.green);

Cambiar Color de Texto

jLabel1.setForeground(Color.red);

Espero te sirva...

Claro, es muy fácil:

label.setFont(new java.awt.Font("Tahoma", 1, 11));


label.setForeground(new java.awt.Color(255, 255, 255));
INSERTAR IMAGEN EN UN JPANEL

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

o Creamos una nueva clase, yo la he llamado Panel, que hereda de la clase


JPanel.
o Creamos dos atributos, ImageIcon y String.
 ImageIcon cargará la imagen en una variable llamada
"imagen".
 String pasará la URL a ImageIcon. La String es llamada
"nombre", pero eso a sido porque no me he dado cuenta de
lo que hacía...estaba un poco en la inopia, podéis llamarla url
si os es más fácil.
o Creamos un constructor con un parámetro (String nombre) y le decimos a
la clase que ese parámetro que va a ser igual al parámetro que tenemos en la
clase:
 this.nombre=nombre;
o Posteriormente invocamos el método "paint" para que nos ayude a pintar la
imagen.
o Dentro de este método creamos un objeto de la clase "Dimension" que
obtiene el tamaño del Panel en todo momento(OJO, Java no pilla la letra
"ñ").
 Dimension tamanio=getSize();
o Creamos un objeto de la clase ImageIcon y le indicamos donde tiene que
buscar el archivo, en este caso es dentro del proyecto, para ello utilizamos el
siguiente código:
 imagen=new
ImageIcon(getClass().getResource(nombre));
 Donde "nombre" será la URL que le pasemos por el
constructor.
o Ahora le decimos a la Clase Graphics que nos pinte la imagen según los
parámetros que le pasemos
o Indicamos que el panel será transparente (ya que si no, no se vería la
imagen)
o Y finalmente le decimos a "super"que lo pinte.
 super.paint(g);

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:

Bueno, en el evento del botón hacemos lo siguiente:

o Establezco la nueva ruta de la url


o Le cambio el nombre al borde(es una pijaica mía, podéis pasar de él)
o Establezco el nuevo borde para el Panel.
o Actualizo el panel.
 panel.updateUI(); este es el método que hay que utilizar para
actualizar el panel.

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

¿como hacer en java para que cuando yo de click en un label este


muestre una imagen?

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class Imagen extends JFrame{


JLabel lbl;
public Imagen(){
setSize(400,400);
setDefaultCloseOperation(EXIT_ON_CLO...
initComponents();
setVisible(true);
}
public void initComponents(){
lbl=new JLabel("Click Me");
getContentPane().setLayout(null);

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();
}
}

SONIDO EN JAVA LEER EN AUDIO

public class Aplicacion {


public static void main(String[] args) {
Hablar hablar=new Hablar();
//para nuestro main unicamente crearemos un objeto de nuestra clase
hablar y le pasaremos por parametros el texto que convertira en voz
hablar.Lee("prueba de habla");
} }

public class Hablar {


//hacemos una solitud a una url en este caso a google translate para
obtener la voz -
private static byte[] getLenguaje(String url) {
URL urlpagina = null;
InputStream isr = null;
URLConnection urlCon = null;
ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();
byte[] byteChunk = new byte[4096];
int noOfBytes = 0;
try {
urlpagina = new URL(url);
urlCon = urlpagina.openConnection();
urlCon.addRequestProperty("User- Agent", "Mozilla/5.0 (compatible;
MSIE 9.0;
Windows NT 6.1;
Trident/5.0)");
urlCon.connect();
isr = urlCon.getInputStream();
while ((noOfBytes = isr.read(byteChunk)) > 0) {
byteOutputStream.write(byteChunk, 0, noOfBytes);
} isr.close();
} catch (Exception ex){
ex.printStackTrace();
return null;
} return byteOutputStream.toByteArray();
} //despues de hacer la solicitud a google transale pasamos a llamar la
libreria JLayer1 para pasarle la respuesta de google translate a su
formato de sonido -
public static boolean Lee(String texto){
String url = "http://translate.google.com.mx/translate_tts?ie=UTF-
8&q=||||&tl=es&total=1&idx=0&textlen=6&prev=input";
url = url.replace("||||", texto.replace(" ", "%20"));
url = url.replace("\n", "");
url = url.replace("\"", "");
byte[] cad = getLenguaje(url);
if (cad == null){
return false;
} InputStream is = new ByteArrayInputStream(cad);
try {
//creamos el objeto de JLAyer1 y ejecutamos el sonido que sera el cual
nosotros le pusimos de texto - Player player = new Player(is);
player.play();
} catch (JavaLayerException ex) {
return false;
} return true;
} }
CONVERTIR TEXTO A AUDIO

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;

public class SimpleTextToSpeech {


private static final String TEXT_TO_SPEECH_SERVICE =
"http://translate.google.com/translate_tts";
private static final String USER_AGENT =
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) " +
"Gecko/20100101 Firefox/11.0";

public static void main(String[] args) throws Exception {

Language language = Language.valueOf("ES".toUpperCase());


// String text = "オラ アディオス グラシアス テ アモ";
String text = "vamos a buscar las esferas del dragon es el
secreto mas estremesedor";
text = URLEncoder.encode(text, "utf-8");
new SimpleTextToSpeech().go(language, text);
}

public void go(Language language, String text) throws Exception {


// Create url based on input params
String strUrl = TEXT_TO_SPEECH_SERVICE + "?" +
"tl=" + language + "&q=" + text;
URL url = new URL(strUrl);

// 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);
}

// Done, save data


File output = new File("sonido de java.mp3");
BufferedOutputStream out =
new BufferedOutputStream(new FileOutputStream(output));
out.write(bufOut.toByteArray());
out.flush();
out.close();
System.out.println("Done");
}

public enum Language {


JP("japan"),
ES("spanish"),
FR("french"),
EN("english");

private final String language;


private Language(String language) {
this.language = language;
}

public String getFullName() {


return language;
}
}
}
Download jlayer-1.0.1-sources.jar

Files contained in jlayer-1.0.1-sources.jar:

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;

public class Principal {

public static void main(String[] args) {

try {
FileInputStream fis;
Player player;
fis = new FileInputStream(
"D:\\Users\\Public\\Music\\Sample Music\\Sleep
Away.mp3");
BufferedInputStream bis = new BufferedInputStream(fis);

player = new Player(bis); // Llamada a constructor de la


clase Player
player.play(); // Llamada al método play
} catch (JavaLayerException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}

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 .

A nosotros nos interesa el paquete "player", que es el que se encarga de la reproducción


(podemos encontrar la documentación de su API aquí). Concretamente utilizaremos la clase
"Player" (documentación aquí).

Das könnte Ihnen auch gefallen