Foro Oficial de Java

Tigrillo LopMan

Lanero Regular
8 Ago 2004
73
hola amigos de laneros ... pues tengo un problemita en Java el cual nunca me habia ocurrido y nose porque me lo da. El problema es el siguiente yo tengo una ventana MDI creada con un JFrame y dentro de este un JDesktopPane y una barra de menu.
Al abrir una ventana JInternalFrame de busqueda de un usuarios en una base de datos, la cuestion es que la agrego al JDesktopPane y la ventanita me funciona como deberia, el problema esta que cuando doy click en el boton de buscar me abre una nueva ventana con los datos del usuario y me cierra la ventana de buscar, asi deberia de ser... pero al cerrar la ventana me crea una nueva y en ningun momento e creado una nueva instancia de la ventana ... nose si a alguien le a dado este problema alguna vez ... como repito es la primera vez que me sucede esto y ya e echo eso de k me pase a otra ventana ... tienen alguna idea de por que puede ser??
 

Koyuki90

Lanero Novato
7 Feb 2009
3
Ayuda!!!!!

Hola.... tengo un problema al partir una imagen....
Hasta ahora he logrado partir una imagen y al darle clic a cada "porcion" me muestra la porcion equivalente de una imagen mas grande... ahora el problema es que esa porcion debe ser partida en varias partes y al darle clic pues me debe mostrar la equivalente de otra imagen mas grande....

asi parto la imagen..

for(int i=0;i<partes; i++){
for(int j=0;j<partes;j++){

cif=new CropImageFilter(j*anchoP,i*altoP,anchoP,altoP);
fis= new FilteredImageSource (img0.getSource(),cif);
pos+=1;
porciones[pos]= createImage(fis);

}
}
 

jose_molina

Lanero Regular
5 Oct 2005
43
muchachos, casi no le revisado los post anteriores, si ya estan me disculpan, pero quisiera preguntarles herramientas o frameworks para usar drag an drop para manejo intermedio - avanzado en java. gracias
 

VIMESI

Lanero Regular
20 Abr 2009
4
Estimados amigos soy nuevo en esto pero siempre habia programado en Java tengo todos los conocimientos de programacion pero de Java no se nada era muy sencillo Visual Fox ya que tenia una base de datos con el programa y listo pero ahora veo que es un poco complicado , si es que hubiera como quisiera que me ayudaran como inicio que software elegir para una empresas medias no grandes las tipicas que llevan el control de Contabilidad, Facturacion, CxC,CXP, Bancos , Inventarios, Roles y unos extras por ahi lo que si generar unos archivos de texto pero tipo *.xml, no se si hay algun manual como iniciar desde cero con que herramientas que bases de datos aunque me dicen que mysql es bueno, crystal report tambien, el hecho que si es posible una ayuda de y de suma urgencia para estudiar a full.
Gracias a todos
 

Shadow257

Lanero Reconocido
18 Ene 2007
533
Tengo el siguiente codigo para enviar emails, y funciona muy bien con gmail pero todabia no logro que funcione con un smtp diferente, queria hacerlo con el de une (smtpmed.une.net.co). Si alguien me puede ayudar se lo agradeceria mucho.

package pruebas;

/**
*
* @author c******
*/
import java.security.Security;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class emailsend {

private static final String SMTP_HOST_NAME = "smtp.gmail.com";
private static final String SMTP_PORT = "465";
private static final String emailMsgTxt = "Test Message Contents fffffffffffffffffffff";
private static final String emailSubjectTxt = "A test from une";
private static final String emailFromAddress = "******@gmail.com";
private static final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
private static final String[] sendTo = {"*******@gmail.com","*******@hotmail.com"};
private static final String usuario="*******";
private static final String passwd="******";

public static void main(String args[]) throws Exception {
try{
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
new emailsend().sendSSLMessage(sendTo, emailSubjectTxt,
emailMsgTxt, emailFromAddress, usuario, passwd);
System.out.println("Sucessfully Sent mail to All Users");
}catch(MessagingException ex){
System.out.print("\nError:\n"+ex.getMessage());
}
catch(Exception e){
System.out.print("\nError:\n"+e.getMessage());
}

}

public void sendSSLMessage(String recipients[], String subject,
String message, String from,final String usu, final String pass) throws MessagingException {
boolean debug = true;
Properties props = new Properties();
props.put("mail.smtp.host", SMTP_HOST_NAME);
props.put("mail.smtp.auth", "true");
props.put("mail.debug", "true");
props.put("mail.smtp.port", SMTP_PORT);
props.put("mail.smtp.socketFactory.port", SMTP_PORT);
props.put("mail.smtp.socketFactory.class", SSL_FACTORY);
props.put("mail.smtp.socketFactory.fallback", "false");
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {

protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(usu, pass);
}
});
session.setDebug(debug);
Message msg = new MimeMessage(session);
InternetAddress addressFrom = new InternetAddress(from);
msg.setFrom(addressFrom);
InternetAddress[] addressTo = new InternetAddress[recipients.length];
for (int i = 0; i < recipients.length; i++) {
addressTo = new InternetAddress(recipients);
}//???????????????
msg.setRecipients(Message.RecipientType.TO, addressTo);
// Setting the Subject and Content Type
msg.setSubject(subject);
msg.setContent(message, "text/plain");
Transport.send(msg);
}
}

:)
 

NSlaver

Jack of all trades
16 Abr 2002
3,547
Tengo el siguiente codigo para enviar emails, y funciona muy bien con gmail pero todabia no logro que funcione con un smtp diferente, queria hacerlo con el de une (smtpmed.une.net.co). Si alguien me puede ayudar se lo agradeceria mucho.

package pruebas;

/**
*
* @author c******
*/
import java.security.Security;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class emailsend {

private static final String SMTP_HOST_NAME = "smtp.gmail.com";
private static final String SMTP_PORT = "465";
private static final String emailMsgTxt = "Test Message Contents fffffffffffffffffffff";
private static final String emailSubjectTxt = "A test from une";
private static final String emailFromAddress = "******@gmail.com";
private static final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
private static final String[] sendTo = {"*******@gmail.com","*******@hotmail.com"};
private static final String usuario="*******";
private static final String passwd="******";

public static void main(String args[]) throws Exception {
try{
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
new emailsend().sendSSLMessage(sendTo, emailSubjectTxt,
emailMsgTxt, emailFromAddress, usuario, passwd);
System.out.println("Sucessfully Sent mail to All Users");
}catch(MessagingException ex){
System.out.print("\nError:\n"+ex.getMessage());
}
catch(Exception e){
System.out.print("\nError:\n"+e.getMessage());
}

}

public void sendSSLMessage(String recipients[], String subject,
String message, String from,final String usu, final String pass) throws MessagingException {
boolean debug = true;
Properties props = new Properties();
props.put("mail.smtp.host", SMTP_HOST_NAME);
props.put("mail.smtp.auth", "true");
props.put("mail.debug", "true");
props.put("mail.smtp.port", SMTP_PORT);
props.put("mail.smtp.socketFactory.port", SMTP_PORT);
props.put("mail.smtp.socketFactory.class", SSL_FACTORY);
props.put("mail.smtp.socketFactory.fallback", "false");
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {

protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(usu, pass);
}
});
session.setDebug(debug);
Message msg = new MimeMessage(session);
InternetAddress addressFrom = new InternetAddress(from);
msg.setFrom(addressFrom);
InternetAddress[] addressTo = new InternetAddress[recipients.length];
for (int i = 0; i < recipients.length; i++) {
addressTo = new InternetAddress(recipients);
}//???????????????
msg.setRecipients(Message.RecipientType.TO, addressTo);
// Setting the Subject and Content Type
msg.setSubject(subject);
msg.setContent(message, "text/plain");
Transport.send(msg);
}
}

:)


Revise tipo protocolo, autenticación y puertos que se utiliza en ambos servidores, Copy/Paste es malo. El server de Une también utiliza TLS?
 

miseral

Lanero Reconocido
16 Feb 2007
447
uff si le funciona con Gmail preste pa acá que eso a mi me sirve. Con otros proveedores mas simples como Une deberia ser mas sencillo no?.
 

Shadow257

Lanero Reconocido
18 Ene 2007
533
Queria mejorarlo para hacer posible elegir entre varios proveedores aparte de gmail, solo que ya no he tenido tiempo de cacharrearlo mas, espero documentarme mejor para la proxima.
 

V3NOM

Lanero Reconocido
12 Jun 2006
7,787
Hola:
Tengo un problemita... a mi como que siempre me va a hablar el eclipse y su diseniador de GUI.

Antes tenia el 3.2 con el GEF, el EMF y el VE; pero me baje el ultimo eclipse e intente montarselos (extrayendo cada zip a la carpeta plugins del eclipse) y no funciono.

Luego me fui a buscarlos a la pagina de eclipse, y los que hay con buenos comentarios tienen licencia comercial y los cobran :S

Quisiera saber que plugins hay buenos y actualizados en estos momentos para eclipse y como hago para montarlos por favor.

Muchas gracias! :)
 

gogeta1985

Lanero Regular
14 May 2009
1
Amigos LAneros, me estoy iniciando en el mundo de java y tengo un codigo que no me compila pero al ejecutar da error, podrian ayudarme porfa

import java.io.*;

class Alumno
{
static int contalumno=0;
String[][] Alumno = new String[10][8];
int opcion;
Alumno()
{
}

//Metodo para ingresar datos de alumno
public void IngresoAlumno()throws IOException
{
int i;
String mas= new String();
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
System.out.print("DATOS DE ALUMNO");
do
{
Alumno[contalumno][0]=Integer.toString(contalumno);
System.out.print("\n\nIngrese rut: ");
Alumno[contalumno][1]=br.readLine();
System.out.print("\n\nIngrese nombre: ");
Alumno[contalumno][2]=br.readLine();
System.out.print("\n\nIngrese apellidos: ");
Alumno[contalumno][3]=br.readLine();
System.out.print("\n\nIngrese edad: ");
Alumno[contalumno][4]=br.readLine();
System.out.print("\n\nIngrese direccion: ");
Alumno[contalumno][5]=br.readLine();
System.out.print("\n\nIngrese Costo codigo carrera: ");
Alumno[contalumno][6]=br.readLine();
System.out.print("\n\nIngrese Codigo asignatura: ");
Alumno[contalumno][7]=br.readLine();
System.out.print("Desea ingresar otro? ");
mas=br.readLine();
System.out.println("Valor contalumno: " + contalumno);
contalumno++;
if (contalumno>9) System.out.println("No se permiten mas alumnos");
} while((mas.charAt(0)=='s' || mas.charAt(0)=='S') && contalumno<10);
} // Fin ingreso Alumno
// metodo para calcular promedios
public static void CalcularPromedios(String[][] Datos)throws IOException {
int i;
float sumaCurso=0,sumaAlumno,promedioCurso=0,promedioAlumno;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

System.out.print("PROMEDIOS");
for(i=0;i<contalumno;i++)
{
sumaAlumno=Float.parseFloat(Datos[2])+Float.parseFloat(Datos[3])+Float.parseFloat(Datos[4])+Float.parseFloat(Datos[5]);
promedioAlumno=sumaAlumno/4;
sumaCurso=sumaCurso+promedioAlumno;
System.out.println("\n Promedio alumno: " + promedioAlumno);
}
promedioCurso=sumaCurso/contalumno;
System.out.println("\n El promedio del Curso es: " +promedioCurso);
System.out.print("\n Presione ENTER: ");

} // Fin calcular promedio
//Metodo para mostrar datos de alumnos
public void MostrarAlumno()throws IOException {
int i;
String mas= new String();
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
System.out.print("DATOS DE Alumno");
for(i=0;i<contalumno;i++)
{
System.out.print("\n\n rut: " + Alumno[0]);
System.out.print("\n\n Nombre: " + Alumno[1]);
System.out.print("\n\n apellidos: " + Alumno[2]);
System.out.print("\n\n Edad: " + Alumno[3]);
System.out.print("\n\n direccion: " + Alumno[4]);
System.out.print("\n\n codigo carrera: " + Alumno[5]);
System.out.print("\n\n nombre carrera: " + Alumno[6]);
System.out.print("\n\n Codigo asignatura: " + Alumno[7]);

System.out.print("\n Presione ENTER: ");
mas=br.readLine();
if (i==9 || Alumno[i+1][0]=="0") {
System.out.println("NO HAY MAS ALUMNOS");
mas=br.readLine();
break;
}
}
} // Fin Mostrar ALUMNOS
}//FIN CLASE ALUMNO

class Asignatura1
{
static int contNotas=0;
String[][] Notas = new String[10][4];
int opcion;

InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
Asignatura1()
{
}

public void IngresarNotas()throws IOException {
int i;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

System.out.print("NOTAS DE ALUMNO");

System.out.print("\n\nIngrese 1° NOTA: ");
Notas[contNotas][0]=br.readLine();
System.out.print("\n\nIngrese 2° NOTA: ");
Notas[contNotas][1]=br.readLine();
System.out.print("\n\nIngrese 3° NOTA: ");
Notas[contNotas][2]=br.readLine();
System.out.print("\n\nIngrese 4° NOTA: ");
Notas[contNotas][3]=br.readLine();
contNotas++;

} // Fin IngresoNotas

public static void MostrarNotas(String[][] Notas)throws IOException {
int i;
String ok=new String();
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
System.out.print("NOTAS DE ALUMNO");
for(i=0;i<contNotas;i++)
{
System.out.print("\n\n Nota 1: " + Notas[0]);
System.out.print("\n\n Nota 2: " + Notas[1]);
System.out.print("\n\n Nota 3: " + Notas[2]);
System.out.print("\n\n Nota 4: " + Notas[3]);
System.out.print("\n Presione ENTER: ");
ok=br.readLine();
if (Notas[i+1][0]=="") {
System.out.println("NO HAY MAS NOTAS");
break;
}
}
} //Fin MostrarNotas



}//Fin clase Asignatura1

class Asignatura2
{
static int contNotas=0;
String[][] Notas = new String[10][4];
int opcion;

InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

public void IngresarNotas()throws IOException {
int i;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

System.out.print("NOTAS DE ALUMNO");

System.out.print("\n\nIngrese 1° NOTA: ");
Notas[contNotas][0]=br.readLine();
System.out.print("\n\nIngrese 2° NOTA: ");
Notas[contNotas][1]=br.readLine();
System.out.print("\n\nIngrese 3° NOTA: ");
Notas[contNotas][2]=br.readLine();
System.out.print("\n\nIngrese 4° NOTA: ");
Notas[contNotas][3]=br.readLine();
contNotas++;

} // Fin IngresoNotas

public static void MostrarNotas(String[][] Notas)throws IOException {
int i;
String ok=new String();
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
System.out.print("NOTAS DE ALUMNO");
for(i=0;i<contNotas;i++)
{
System.out.print("\n\n Nota 1: " + Notas[0]);
System.out.print("\n\n Nota 2: " + Notas[1]);
System.out.print("\n\n Nota 3: " + Notas[2]);
System.out.print("\n\n Nota 4: " + Notas[3]);
System.out.print("\n Presione ENTER: ");
ok=br.readLine();
if (Notas[i+1][0]=="") {
System.out.println("NO HAY MAS NOTAS");
break;
}
}
} //Fin MostrarNotas
}//Fin clase Asignatura2

class Notas
{
Alumno Ani = new Alumno();
Asignatura1 Cli = new Asignatura1();
Asignatura2 Clo = new Asignatura2();

public static void main(String args[]) throws IOException {
Alumno Ani = new Alumno();
Asignatura1 Cli = new Asignatura1();
Asignatura2 Clo = new Asignatura2();
int opcion=9;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

do {
System.out.println(" *****************************************");
System.out.println(" ANTECEDENTES ALUMNOS Y NOTAS");
System.out.println("\n (1) Ingreso Datos de ALUMNO");
System.out.println("\n (2) Ingreso NOTAS ASIGNATURA 1");
System.out.println("\n (3) Ingreso NOTAS ASIGNATURA 2");
System.out.println("\n (4) Mostrar Datos DE ALUMNO");
System.out.println("\n (5) Mostrar Notas DE ALUMNO");
System.out.println("\n (6) Calcular Promedio por alumno y por curso");
System.out.println("\n (7) Salir del programa\n\n\n");
System.out.println(" *****************************************");
System.out.print(" Ingrese una opcion --> ");
opcion=Integer.parseInt(br.readLine());
//Se eligue un case segun opcion seleccionada y se llama a los metodos correspondientes
switch(opcion) {
case 1: if (Ani.contalumno<10) Ani.IngresoAlumno(); //Llamada a metodo para ingresar alumnos
else System.out.println("NO HAY CUPO PARA MAS ALUMNOS");
break;
case 2: if(Cli.contNotas<4) Cli.IngresarNotas(); //Llamada a metodo para ingresar NOTAS ASIGNATURA 1
else System.out.println("SOLO 4 NOTAS");
break;
case 3: if(Clo.contNotas<4) Clo.IngresarNotas(); //Llamada a metodo para ingresar NOTAS ASIGNATURA 2
else System.out.println("SOLO 4 NOTAS");
break;


case 4: Ani.MostrarAlumno(); //Llamada a metodo para mostrar datos alumnos
break;
case 5: Cli.MostrarNotas(null); //Llamada a metodo para mostrar notas de asignatura 1
Clo.MostrarNotas(null); //Llamada a metodo para mostrar notas de asignatura 2
break;
case 6: Ani.CalcularPromedios(null); //Llamada a metodo para realizar y mostratr calculos
break;
// default: despedida();
}

} while (opcion!=7);
System.out.println("HASTA PRONTO");
}//Fin del main
} //Fin clase Notas

ese es el codigo, el problema esta en la llamada a los metodos en los case
parece que es algo de los parametros de la funcion.

de antemano gracias.
 

wac666

Lanero Reconocido
13 Feb 2008
517
Bonito desorden :D


Verifica las variables, veo muchas variables estaticas que no creo deban estar asi.

Trata de hacer un archivo por clase.
Y empaqueta las clases (package).

Intenta usando un IDE como eclipse.


Saludos.
 

Archivos adjuntos

  • Alumno.txt
    8.8 KB · Visitas: 1,411

MikeWolf

Lanero Reconocido
29 Oct 2003
414
hola.. es posible modificar un archivo secuencial sin tener que usar un archivo temporal?, es decir tengo n datos y quiero borrar el de la mitad, y por lo menos cambiarle el nombre al 2do.. es posible esto sin usar temporales. (es decir x lo general leo el archivo entero, modifico los datos y reescribo cada dato 1 a 1). con temporales no hay forma de hacer todo facilmente?
 

Master-Chan

Lanero Reconocido
19 Abr 2005
446
Buenas muchachos

Hasta ahora estoy empezando a manejar esto de java y pues estoy haciendo una conexion java MYSQL y pues ya tengo la conexion y ya puedo guardar datos en en mi base de datos y los puedo consulta pero tengo un problemita en mi java necesito consultar datos individuales explico necesito consultar por codigo en mi base de datos hay varios codigos y necesito que si dijito codigo en java esto me traiga todo el registro de mi tabla pero lo que tengo me consulta toda la base de datos una por una y todos los registros


Como hago para que me consulte solo un registro completo desde un solo dato.

Gracias porfa es urgente hay adjunto el codigo
 

Archivos adjuntos

  • codigo.txt
    14.6 KB · Visitas: 552

MasterOfHell

Lanero Reconocido
24 Ago 2004
305
Buenas muchachos

Hasta ahora estoy empezando a manejar esto de java y pues estoy haciendo una conexion java MYSQL y pues ya tengo la conexion y ya puedo guardar datos en en mi base de datos y los puedo consulta pero tengo un problemita en mi java necesito consultar datos individuales explico necesito consultar por codigo en mi base de datos hay varios codigos y necesito que si dijito codigo en java esto me traiga todo el registro de mi tabla pero lo que tengo me consulta toda la base de datos una por una y todos los registros


Como hago para que me consulte solo un registro completo desde un solo dato.

Gracias porfa es urgente hay adjunto el codigo

Hola.

Para lo que quieres en java tienes dos alternativas, la elegante y la menos elegante :p

1. para principiantes ;) (usando statement): en este caso lo haces como lo estas haciendo en tu codigo y simplemente construyendo la sentencia SQL dinamicamente en un String por ejemplo:

Código:
public void consulta(int codigo){
       .....conexiones etc
       String  sqlStr = "SELECT codigo,tit,mate,tecn,regi FROM articulos2 WHERE codigo = " + codigo;
       Statement est=conec.createStatement();
       ResultSet  res = est.executeQuery(sqlStr );
       //como espera solo un registro pues pregunta solo por el primer registro
       if(res.next()){
                        a=res.getString("codigo");
			b=res.getString("tit");
			c=res.getString("mate");
			d=res.getString("tecn");
			el=res.getString("regi");
       }else{
             //lo que quiera hacer en el caso de no retornar ningun registro
       }
}

2. la recomendada usando sentencias PreparedStatement: las razones, principalmente performance, un codigo mas claro, mas facil de mantener etc... etc....


Código:
public void consulta(int codigo){
       .....conexiones etc
       String  sqlStr = "SELECT codigo,tit,mate,tecn,regi FROM articulos2 WHERE codigo = ?";
       PreparedStatement  pest=conec.prepareStatement(sqlStr);
       pest.setInt(1,codigo);

       ResultSet  res = pest.executeQuery();
       //como espera solo un registro pues pregunta solo por el primer registro
       if(res.next()){
                        a=res.getString("codigo");
			b=res.getString("tit");
			c=res.getString("mate");
			d=res.getString("tecn");
			el=res.getString("regi");
       }else{
             //lo que quiera hacer en el caso de no retornar ningun registro
       }
}

Ahora ya que estas aprendiendo te hago algunas recomendaciones al construir una aplicacion como lo que tienes en el codigo adjunto:
  • contruye una clase que te trabaje toda la logica de conectividad con a Base de datos, por lo general se tiene una o un conjunto de clases que se encarga de hacer las conexiones a la BD, captura de excepciones, etc.. no es buena practica tener embebido en el codigo la conectividad como la tienes
  • si aun mantienes la conectividad como la tienes nunca olvides cerrar las conexiones a la BD, en el codigo adjunto nunca cierras la conexion que abres lo que ocasionaria la creacion de una conexion cada en cada invocacion del metodo, es comun para esto casos adicionar una sentencia finally en el segmento try-catch con la logica para cerrar la conexion, con esto se asegura que siempre no importa que pase cierre a conexion
  • trata de usar las excepciones, en el codigo adjunto cuando se captura un SQLException se esta imprimiendo el stack de errores, esto sale solo en la consola o salida estandar y los errores de SQL van desde caidas de la conexion hasta errores en el SQL ingresado asi que es mejor manejarlas, capturarlas y darle al usuario el mensaje apropiado
 

NightwishDark

Lanero Regular
18 May 2009
2
Hola, tengo un pequeño aporte pero necesito ayuda a reducir este còdigo que es un laberinto en JPanel... Necesito que los JLabel que hago por separado salga en un arreglo bidimensional con dos ciclos for anidados. Gracias.

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

public class Laberinto extends JFrame implements ActionListener
{
public JButton comenzar = new JButton("Comenzar");
public JButton reiniciar = new JButton("Reiniciar");
ImageIcon raton=new ImageIcon("raton.jpg");
ImageIcon ladrillo=new ImageIcon("ladrillo.jpg");
JLabel label[] ={ new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER)};


JLabel label1[] ={new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER)};

MiHilo hilo;
public Laberinto (){
getContentPane().setLayout(null);
setVisible(true);

this.getContentPane().add(comenzar);
comenzar.setSize(100,50);
comenzar.setLocation(450,150);
this.getContentPane().add(reiniciar);
reiniciar.setSize(100,50);
reiniciar.setLocation(450,250);
comenzar.setToolTipText( "Presiona para comenzar" );
reiniciar.setToolTipText( "Presiona para reiniciar" );
//oyente
comenzar.addActionListener(this);
reiniciar.addActionListener(this);


this.setTitle("LABERINTO");
this.setSize(600,500);

//llamo metodo
iniciar();
label[0].setLocation(50,50);label[1].setLocation(100,50);label[2].setLocation(150,50);
label[3].setLocation(150,100);label[4].setLocation(150,150);label[5].setLocation(150,200);
label[6].setLocation(150,250);label[7].setLocation(150,300);label[8].setLocation(150,350);
label[9].setLocation(200,350);label[10].setLocation(250,350);label[11].setLocation(250,300);
label[12].setLocation(250,250);label[13].setLocation(250,200);label[14].setLocation(250,150);
label[15].setLocation(250,100);label[16].setLocation(250,50);label[17].setLocation(300,50);
label[18].setLocation(350,50);label[19].setLocation(350,100);label[20].setLocation(350,150);
label[21].setLocation(350,200);label[22].setLocation(350,250);label[23].setLocation(350,300);
label[24].setLocation(350,350);
label1[0].setLocation(200,50);label1[1].setLocation(50,100);label1[2].setLocation(100,100);
label1[3].setLocation(200,100);label1[4].setLocation(300,100);label1[5].setLocation(50,150);
label1[6].setLocation(100,150);label1[7].setLocation(200,150);label1[8].setLocation(300,150);
label1[9].setLocation(50,200);label1[10].setLocation(100,200);label1[11].setLocation(200,200);
label1[12].setLocation(300,200);label1[13].setLocation(50,250);label1[14].setLocation(100,250);
label1[15].setLocation(200,250);label1[16].setLocation(300,250);label1[17].setLocation(50,300);
label1[18].setLocation(100,300);label1[19].setLocation(200,300);label1[20].setLocation(300,300);
label1[21].setLocation(50,350); label1[22].setLocation(100,350);label1[23].setLocation(300,350);
label1[24].setLocation(300,350);
addWindowListener(new cerrar());

}

public void iniciar(){
for(int i=0;i<25;i++){

this.getContentPane().add(label);label.setSize(50,50);
label.setIcon(null);
label.setBackground(java.awt.Color.black);
label.setOpaque(true);label.setForeground(Color.white);
label.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(255, 255, 255)));

this.getContentPane().add(label1);label1.setSize(50,50);
label1.setBackground(java.awt.Color.red);
label1.setOpaque(true);label1.setForeground(Color.white);
label1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(255, 255, 255)));
label1.setIcon(ladrillo);
}
}
public void actionPerformed(ActionEvent e){

/**Evento del boton que invoca al metodo empezar()*/
if(e.getSource()==comenzar){
comenzar.setEnabled(false);
hilo= new MiHilo();
hilo.start();
}
if(e.getSource()==reiniciar){
comenzar.setEnabled(true);
hilo.stop();
iniciar();
}
}


class cerrar extends WindowAdapter{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}

class MiHilo extends Thread {
int i;
public void run() {
try{
while(i<25){
for(i=0;i<25;i++){
Thread.sleep(500);
label.setIcon(raton);
if(i>0)
label[i-1].setIcon(null);
}
}
JOptionPane.showMessageDialog(null,"Felicidades el Raton llego al final del camino");
}catch(Exception er){
System.out.println(er);
}

}
}

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

}
 

NightwishDark

Lanero Regular
18 May 2009
2
Una ayuda con JPanel...

Hola, tengo un pequeño aporte pero necesito ayuda a reducir este còdigo que es un laberinto en JPanel... Necesito que los JLabel que hago por separado salga en un arreglo bidimensional con dos ciclos for anidados. Gracias.

Soy estudiante de progragramaciòn y pues si me aceptan el còdigo en mi colegio pero quieren que use arreglos bidimesionales para aceptarmelo pero no los se usar, mmmm, les agradezco la ayudita...

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

public class Laberinto extends JFrame implements ActionListener
{
public JButton comenzar = new JButton("Comenzar");
public JButton reiniciar = new JButton("Reiniciar");
ImageIcon raton=new ImageIcon("raton.jpg");
ImageIcon ladrillo=new ImageIcon("ladrillo.jpg");
JLabel label[] ={ new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER)};


JLabel label1[] ={new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),new JLabel("",JLabel.CENTER),
new JLabel("",JLabel.CENTER)};

MiHilo hilo;
public Laberinto (){
getContentPane().setLayout(null);
setVisible(true);

this.getContentPane().add(comenzar);
comenzar.setSize(100,50);
comenzar.setLocation(450,150);
this.getContentPane().add(reiniciar);
reiniciar.setSize(100,50);
reiniciar.setLocation(450,250);
comenzar.setToolTipText( "Presiona para comenzar" );
reiniciar.setToolTipText( "Presiona para reiniciar" );
//oyente
comenzar.addActionListener(this);
reiniciar.addActionListener(this);


this.setTitle("LABERINTO");
this.setSize(600,500);

//llamo metodo
iniciar();
label[0].setLocation(50,50);label[1].setLocation(100,50);label[2].setLocation(150,50);
label[3].setLocation(150,100);label[4].setLocation(150,150);label[5].setLocation(150,200);
label[6].setLocation(150,250);label[7].setLocation(150,300);label[8].setLocation(150,350);
label[9].setLocation(200,350);label[10].setLocation(250,350);label[11].setLocation(250,300);
label[12].setLocation(250,250);label[13].setLocation(250,200);label[14].setLocation(250,150);
label[15].setLocation(250,100);label[16].setLocation(250,50);label[17].setLocation(300,50);
label[18].setLocation(350,50);label[19].setLocation(350,100);label[20].setLocation(350,150);
label[21].setLocation(350,200);label[22].setLocation(350,250);label[23].setLocation(350,300);
label[24].setLocation(350,350);
label1[0].setLocation(200,50);label1[1].setLocation(50,100);label1[2].setLocation(100,100);
label1[3].setLocation(200,100);label1[4].setLocation(300,100);label1[5].setLocation(50,150);
label1[6].setLocation(100,150);label1[7].setLocation(200,150);label1[8].setLocation(300,150);
label1[9].setLocation(50,200);label1[10].setLocation(100,200);label1[11].setLocation(200,200);
label1[12].setLocation(300,200);label1[13].setLocation(50,250);label1[14].setLocation(100,250);
label1[15].setLocation(200,250);label1[16].setLocation(300,250);label1[17].setLocation(50,300);
label1[18].setLocation(100,300);label1[19].setLocation(200,300);label1[20].setLocation(300,300);
label1[21].setLocation(50,350); label1[22].setLocation(100,350);label1[23].setLocation(300,350);
label1[24].setLocation(300,350);
addWindowListener(new cerrar());

}

public void iniciar(){
for(int i=0;i<25;i++){

this.getContentPane().add(label);label.setSize(50,50);
label.setIcon(null);
label.setBackground(java.awt.Color.black);
label.setOpaque(true);label.setForeground(Color.white);
label.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(255, 255, 255)));

this.getContentPane().add(label1);label1.setSize(50,50);
label1.setBackground(java.awt.Color.red);
label1.setOpaque(true);label1.setForeground(Color.white);
label1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(255, 255, 255)));
label1.setIcon(ladrillo);
}
}
public void actionPerformed(ActionEvent e){

/**Evento del boton que invoca al metodo empezar()*/
if(e.getSource()==comenzar){
comenzar.setEnabled(false);
hilo= new MiHilo();
hilo.start();
}
if(e.getSource()==reiniciar){
comenzar.setEnabled(true);
hilo.stop();
iniciar();
}
}


class cerrar extends WindowAdapter{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}

class MiHilo extends Thread {
int i;
public void run() {
try{
while(i<25){
for(i=0;i<25;i++){
Thread.sleep(500);
label.setIcon(raton);
if(i>0)
label[i-1].setIcon(null);
}
}
JOptionPane.showMessageDialog(null,"Felicidades el Raton llego al final del camino");
}catch(Exception er){
System.out.println(er);
}

}
}

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

}
 

lovo15

Lanero Regular
16 Mar 2007
48
Hola, tengo un problema y es que necesito hacer un programa que leea un archivo y cuente el número de palabras que contiene el archivo, hasta donde yo se dicho archivo va a estar formado por 3 columnas y n-filas y hasta ahora he logrado implementar un contador de lineas pero para pasarlo a palabras me da problemas porque de hecho núnca he utilizado el tokenizer (googleo) antes, esto es lo que llevo:

import java.io.*;
class Palabra
{
public static void main(String args[])
{
FileInputStream archivo = null;
byte Letra;
boolean FinDeArchivo = false, EncuentraCaracter = false;
if (args.length == 0)
{
System.out.print("Debe indicar el nombre de un archivo.");
System.exit(1);
}
try {
archivo = new FileInputStream(args[0]);
}
catch (FileNotFoundException e)
{
System.out.println("Error al abrir el archivo " + args[0]);
System.exit(1);
}
try {
while (! FinDeArchivo)
{
Letra = (byte) archivo.read();
if (Letra == -1)
{
if (EncuentraCaracter)
FinDeArchivo = true;
}
else if (Letra == 13) // Retorno de carro
{
EncuentraCaracter = false;
}
else if (Letra != 10) // Salto de línea
EncuentraCaracter = true; // Carácter encontrado en la línea actual
}
}
catch (IOException ReadError)
{
System.out.println("Error al leer el archivo.");
System.exit(1);
}
try {
archivo.close();
}
catch (IOException CloseError)
{
System.out.println("Error al cerrar el archivo");
System.exit(1);
}
System.out.println(args[0] + " contiene palabras");
}
}

Lo medio manosee para que on me de problemas con los archivos, alguno me puede ayudar a terminar esto, de antemano les agradezco.
 

MasterOfHell

Lanero Reconocido
24 Ago 2004
305
Hola, tengo un problema y es que necesito hacer un programa que leea un archivo y cuente el número de palabras que contiene el archivo, hasta donde yo se dicho archivo va a estar formado por 3 columnas y n-filas y hasta ahora he logrado implementar un contador de lineas pero para pasarlo a palabras me da problemas porque de hecho núnca he utilizado el tokenizer (googleo) antes, esto es lo que llevo:



Lo medio manosee para que on me de problemas con los archivos, alguno me puede ayudar a terminar esto, de antemano les agradezco.

Bueno.. para lo que necesitas te recomiendo mejor otras alternativas:
1) si se necesita es leer un archivo linea a linea lo mejor es usar la clase Scanner que esta para eso, asi no es necesario detectar el salto de linea.
2) no es necesario usar un tokenizer aunque se puede, para este caso por ejemplo use el metodo Split dandole la expresion regular de encontrar donde tenga 1 o mas espacios en blanco para retornarme el arreglo de palabras.


Código:
public class ContadorPalabras {

    public static void main(String[] args) {
        FileInputStream fis = null;
        try {
            if (args.length == 0) {
                System.out.print("Debe indicar el nombre de un archivo.");
                System.exit(1);
            }

            int numeroPalabras = 0;

            String archivo = args[0];
            fis = new FileInputStream(archivo);
            Scanner scanner = new Scanner(fis);

            while (scanner.hasNextLine()) {
                String lineData = scanner.nextLine();
                //Elimina cualquier caracter extra
                lineData = lineData.trim();
                /*
                 *Realiza el split de la cadena usando expresiones regulares
                 * partiendolo donde encuentre espacios y retornando un
                 * arreglo con las palabras encontradas en la linea
                 */
                String[] lineSplit = lineData.split("\\s{1,}");
                numeroPalabras += lineSplit.length;
            }
            
            System.out.println(archivo + " contiene " + numeroPalabras + " palabras");

        } catch (FileNotFoundException ex) {
            Logger.getLogger(ContadorPalabras.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                fis.close();
            } catch (IOException ex) {
                Logger.getLogger(ContadorPalabras.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

    }
}


Creo que asi es mas sencillo