Foro Oficial de Java

RogerJose

Lanero Reconocido
6 Mar 2005
545
meletrepo dijo:
que tal otra vez yo con mis preguntas tengo el siguiente codigo para imprimirlo en consola me esta funcionando bien el problema es cuando lo hago grafico

try {
sleep(700);
}
catch(InterruptedException e) {
return;
}
....

A mi me gustaria que fueras un poco mas explicito, como asi que se te duerme la maquina?, acaso se queda bloqueado el programa?, te sale alguna exception?, para que quieres dormir el hilo?, en fin, es mejor que des mas detalles...

Ademas, y como recomendacion, deberias imprimir el mensaje de la posible excepcion en el catch.

-
 

NSlaver

Jack of all trades
16 Abr 2002
3,540
meletrepo dijo:
que tal otra vez yo con mis preguntas tengo el siguiente codigo para imprimirlo en consola me esta funcionando bien el problema es cuando lo hago grafico

el problema esta aqui que no puedo poner el metodo sleep(700) entonces se me come toda la maquina


Solo con leer esto uno se da cuenta de que lo que necesitas es investigar el uso de los Threads "hilos"... Go googleit ....
 

Yeison

Lanero Líder
Lanero VIP
1 Feb 2004
11,132
meletrepo dijo:
que tal otra vez yo con mis preguntas tengo el siguiente codigo para imprimirlo en consola me esta funcionando bien el problema es cuando lo hago grafico

public class Controlador extends Thread{

public void run(){
while(true){
SimpleDateFormat x= new SimpleDateFormat("h:mm:ss a");
Date today= new Date();
String resp= new String(x.format(today.getTime()));
if(resp.equals("8:47:30 PM"))
System.out.println("es la otra otra hora");
try {
sleep(700);
}
catch(InterruptedException e) {
return;
}
}
}
}

///////esto es lo que estoy tratando de hacer
public class Window extends javax.swing.JFrame implements Runnable{


public Window() {
initComponents();
}


private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenuItem1 = new javax.swing.JMenuItem();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);

jMenu1.setText("menu");
jMenuItem1.setText("Item");
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem1ActionPerformed(evt);
}
});

jMenu1.add(jMenuItem1);

jMenuBar1.add(jMenu1);

setJMenuBar(jMenuBar1);

org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 510, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addContainerGap(19, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
.addContainerGap(12, Short.MAX_VALUE)
.add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 438, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(22, 22, 22))
);
pack();
}

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
this.run();
}

public void run(){
while(true){
SimpleDateFormat x= new SimpleDateFormat("h:mm:ss a");
Date today= new Date();
String resp= new String(x.format(today.getTime()));

el problema esta aqui que no puedo poner el metodo sleep(700) entonces se me come toda la maquina
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Window().setVisible(true);
}
});
}

}

pues obvio, asi como tienes el programas no estas utilizando hilos... solo estas implementando la clase Runnable... donde esta thread que debes utilizar y empezar en el constructor??? asi nunca te funcionara
 

meletrepo

Lanero Reconocido
7 Oct 2005
282
hola haber les explico estoy haciendo un programita que tiene que correr 7*24 ese programita me llama una procedimiento a una hora del dia entonces lo hice asi el sleep(700) es por que si no se lo pongo se me come toda la maquina y ademas que cuando llega la hora exacata se ejecuta varias veces y solo la quiero ejecutar una vez, asi me esta funcionando pero ahora lo quiero hacer grafico el rpoblema es que como lo estoy haciendo no puedo extender de Frame y despues de Thread
por eso traté implementar Runnable pero ahi me quede. Aqui hay laneros super pilos que depronto me pueden ayudar con otra forma de hacer muchas gracias
public class Controlador extends Thread{

public void run(){
while(true){
SimpleDateFormat x= new SimpleDateFormat("h:mm
smiley%20-%20puzzled.gif
s a");
Date today= new Date();
String resp= new String(x.format(today.getTime()));
if(resp.equals("8:47:30 PM"))
System.out.println("es la hora");
try {
sleep(700);
}
catch(InterruptedException e) {
return;
}
}
}
}
 

swoko

Lanero Reconocido
12 Dic 2003
1,140
Como dijeron antes, no tienes NI IDEA de como funcionan los hilos en Java.

Lee las clases Timer, SwingWorker y de pronto te sirve mejor.

Ojo que no lo vayan a tomar como que lo estyo tratando mal, simplemete estás MFT
 

meletrepo

Lanero Reconocido
7 Oct 2005
282
swoko dijo:
Como dijeron antes, no tienes NI IDEA de como funcionan los hilos en Java.

Lee las clases Timer, SwingWorker y de pronto te sirve mejor.

Ojo que no lo vayan a tomar como que lo estyo tratando mal, simplemete estás MFT

si tienes razon por eso hago la pregunta, voy a revisar la clase Timer y SwingWorker gracias.
 

RogerJose

Lanero Reconocido
6 Mar 2005
545
meletrepo dijo:
si tienes razon por eso hago la pregunta, voy a revisar la clase Timer y SwingWorker gracias.
Te recomiendo que antes de meterte con esas clases, leas un poco sobre el manejo de hilos en java, para que tengas las bases teoricas.

-
 

meletrepo

Lanero Reconocido
7 Oct 2005
282
Hola que tal cambie el codigo a esto ahora lo voy a hacer en frame haber como me va y ponoendo las fechas dinamicas cualquier concejo buenisimo gracias
public class Main {
public static Calendar date =Calendar.getInstance();
Timer timer = new Timer();
date.set(
Calendar.DAY_OF_WEEK,
Calendar.FRIDAY
);
date.set(Calendar.HOUR, 10);
date.set(Calendar.MINUTE, 0);
date.set(Calendar.SECOND, 30);
date.set(Calendar.MILLISECOND, 10);

timer.schedule(new TimerTask() {
public void run() {
System.out.println(" Hola mundo");

}},
date.getTime(),
1000 * 60 * 60 * 24 * 7
);
}
}
 

swoko

Lanero Reconocido
12 Dic 2003
1,140
Perfecto hombre, ya con la clase Timer se ve más decente :)

Un Timer tiene un hilo por dentro... así que sería bueno empezar a trabajar con hilos!
 

V3NOM

Lanero Reconocido
12 Jun 2006
7,792
Muchachos tengo una pregunta que surgio gracias a la insistencia de mi profe:
Resulta que tenemos objeticos cualquiera y necesitamos comparar si son iguales. Java tiene un metodo de la clase padre Object con un metodo llamado equals() que se encarga de eso. Ahora, mi profe dice que eso no es necesario, que se puede utilizar el == pues el compara las referencias en memoria de los objetos que a la final seria lo mismo.
Esa es mi duda...
puedo decir por ejemplo:
Nodo actual = new Nodo (20);
Nodo anterior = actual;
if (anterior == actual)....

Muchas gracias por la ayuda!!
Salu2:p
 

NSlaver

Jack of all trades
16 Abr 2002
3,540
Nuuuuuuu para nada, eso no es lo mismo, es completamente diferente comparar referencias a comparar los objetos en si:

Con el ejemplo

Nodo a = new Nodo(20);
Nono b = new Nodo(20);
La comparación por medio de == compararía las referencias lo en ese caso daría false, por que las referencias apuntan a sitios distintos.
Si le da equals y lo que hace este metodo es SOLO comparar el valor del nodo (el 20), daría verdadero.


== Compara REFERENCIAS no valores
equals(object) compara valores para establecer su equivalencia.
 
  • Me gusta
Reacciones: 2 personas

V3NOM

Lanero Reconocido
12 Jun 2006
7,792
Nuuuuuuu para nada, eso no es lo mismo, es completamente diferente comparar referencias a comparar los objetos en si:

Con el ejemplo

Nodo a = new Nodo(20);
Nono b = new Nodo(20);
La comparación por medio de == compararía las referencias lo en ese caso daría false, por que las referencias apuntan a sitios distintos.
Si le da equals y lo que hace este metodo es SOLO comparar el valor del nodo (el 20), daría verdadero.


== Compara REFERENCIAS no valores
equals(object) compara valores para establecer su equivalencia.
Peri si por ejemplo necesito saber si el siguiente de el ultimo nodo es la cabeza (hablando de una lista circular) se podria hacer esto o no:
if (actual.next == cab)...
gracias...
Salu2:p
 

RogerJose

Lanero Reconocido
6 Mar 2005
545
NSlaver dijo:
Nuuuuuuu para nada, eso no es lo mismo, es completamente diferente comparar referencias a comparar los objetos en si:

Con el ejemplo

Nodo a = new Nodo(20);
Nono b = new Nodo(20);
La comparación por medio de == compararía las referencias lo en ese caso daría false, por que las referencias apuntan a sitios distintos.
Si le da equals y lo que hace este metodo es SOLO comparar el valor del nodo (el 20), daría verdadero.

== Compara REFERENCIAS no valores
equals(object) compara valores para establecer su equivalencia.
Se equivoca, de echo la implementacion por defecto del metodo equals(Object obj) de la clase Object es una sola linea:
PHP:
return (this == obj);
Otra cosa es que la clase sobreescriba el metodo equals(Object obj) y se comparen valores de los atributos y segun esto retornar true o false.

Entonces si no se sobreescribe este metodo, seria indistinto utilizar una forma o la otra.

Por ejemplo la clase Integer lo sobreescribe para evaluar el contenido de su atributo value, así:
PHP:
if (obj instanceof Integer) {
        return value == ((Integer)obj).intValue();
    }
    return false;
, value es una variable (primitiva) tipo int que almacena el valor numerico del entero como tal, por eso se podrian obtener resultados diferentes al utilizar equals(Object obj) o == para comparar objetos Integer.

En el caso de la lista enlazada es preferible utilizar "==" para comparar los nodos, ya que se requiere comparar referencias a memoria, asi mismo se evitarian dolores de cabeza en casotal que por alguna razon la clase Nodo sobreescriba el metodo equals.

-
 
  • Me gusta
Reacciones: 2 personas

NSlaver

Jack of all trades
16 Abr 2002
3,540
roger padilla dijo:
Se equivoca, de echo la implementacion por defecto del metodo equals(Object obj) de la clase Object es una sola linea:
PHP:
return (this == obj);
Otra cosa es que la clase sobreescriba el metodo equals(Object obj) y se comparen valores de los atributos y segun esto retornar true o false.

100%, por ese lado lo pensé en como debería ser una implementación de equals mas no en como lo implementa por defecto object.
 

miseral

Lanero Reconocido
16 Feb 2007
447
EL IDE para java. ECLIPSE
java3d (todo menos guia de instalacion)
jigloo para hacer ventanas y todos los juguetes a punta de clicks (plugin para eclipse)
busquenlo en ecliplseplugincentral o mandenme un correo (jjunalix@gmail.com)
phpeclipse un debugger para php usando eclipse. usquenlo en ecliplseplugincentral o mandenme un correo (jjunalix@gmail.com)
Recuerden que java es un buen lenguaje de alto nivel, algo lento , pero muy intuitivo.
 

giger

Lanero Regular
21 Jul 2005
30
Hola a todos.
Me gustaria saber si alguien ha experimentado con el GWT (Google Web Toolkit) para desarrollos J2EE con presentacion ajax, o si conocen algun framework bueno para realizar esta tarea.

Gracias

Pd. Personalmente recomiendo como IDE de desarrollo el Oracle JDeveloper, es de los pocos prodcutos gratis de oracle y es realmente bueno.
 

JhonFX

Lanero Reconocido
23 Sep 2005
381
hola mi gente mi nombre es jhonatan salcedo y estudio tecnologia en sistema cartagenero 100% necesito que me ayuden con algunos tutoriales de java y aplicaciones y que me aconsejen con algunos tips porfa
gracias