Foros del Web » Programación para mayores de 30 ;) » Java »

Alguien me puede decir donde esta el error?

Estas en el tema de Alguien me puede decir donde esta el error? en el foro de Java en Foros del Web. Hola todos: Estoy aprendiendo Java con el libro de “Como programar en Java” de deitel y deitel; pero este código presenta un error o no ...
  #1 (permalink)  
Antiguo 11/02/2005, 10:58
 
Fecha de Ingreso: enero-2005
Mensajes: 22
Antigüedad: 19 años, 3 meses
Puntos: 0
Pregunta Alguien me puede decir donde esta el error?

Hola todos:
Estoy aprendiendo Java con el libro de “Como programar en Java” de deitel y deitel; pero este código presenta un error o no soy capaz de detectarlo, porque se trata de un ejemplo del libro el cual esta el código no es un ejercicio propuesto.
Para quienes tengan el libre es el Capitulo 11 Pág. 579 y es el de la figura 11.13
Aquí posteo el código:

Se trata de el manejo de frame o marcos.

import java.awt.*;
import java.applet.*;

public class MiMarco2 extends Applet
{
private DemoFrame f;
private Button muestraFrame;

public void init()
{
String s = "Oprima para ver el marco";

muestraFrame = new Button(s);
add(muestraFrame);
}

public boolean action(Event e, Object o)
{
if(e.target == muestraFrame)
{
String s = "¡Este marco hace algo!";

if(f != null)
{
f.hide(); //Ocultar el marco
f.dispose(); //Liberar recursos
}

f = new DemoFrame(s); //Ejemplarizar un marco
f.resize(300, 200); //Redimensionar el marco

//No permitir que se redimensione el marco
f.setResizable(false);

f.show(); //Exhibir marco
}

return true;
}
}

class DemoFrame extends Frame
{
private Button a, b, c, d;

public DemoFrame(String s)
{
//Llamar al constructor de la clase base
super(s);

a = new Button("amarillo");
b = new Button("rojo");
c = new Button("azul");
d = new Button("verde");

//El diseño por omisión es Borderlayout
add("Nort", a);
add("East", b);
add("South", c);
add("West", d);
}

public boolean handleEvent(Event e)
{
if(e.id == Event.WINDOW_DESTROY)
{
hide(); //Ocultar Marco
dispose(); //Liberar Recursos

return true;
}

return super.handleEvent(e);
}

public boolean action(Event e, Object o)
{
if(e.target == a)
{
setBackground(Color.yellow);
}

else if(e.target == b)
{
setBackground(Color.red);
}

else if(e.target == c)
{
setBackground(Color.blue);
}

else if(e.target == d)
{
setBackground(Color.green);
}

repaint(); //Actualizar el color
return true;
}
}
  #2 (permalink)  
Antiguo 11/02/2005, 12:27
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 5 meses
Puntos: 7
ya copie tu codigo, y si lo compile sin errores....
PERO........

hay un pequeño "error", y es que usa un metodo que esta "deprecated", entonces al menos yo no lo puedo correr.
no se porque....
crep q lo tengo q compilar indicado que tiene metodos "deprecated"
  #3 (permalink)  
Antiguo 11/02/2005, 14:31
 
Fecha de Ingreso: enero-2005
Mensajes: 22
Antigüedad: 19 años, 3 meses
Puntos: 0
alguien sabe en que falla el programita?....

Gracias por la pronta respuesta BLACKWIND.

Pero no entiendo porque hay un método desaprobado o “deprecated”, la verdad nunca había escuchado sobre ese tipo de métodos, espero me comentes como debo compilar para que ejecute correctamente, pues aunque no registra errores.
Pero al ejecutarlo solo saca el botón y al pulsarlo falla.

El libro que tengo de Deitel y Deitel es la segunda edición y he encontrado un par de errores muy simples en códigos y otros que son ortográficos que tal vez ya no sean sino culpa de la editorial.
Pero es desalentador para uno como principiante que los ejemplos no funcionen, ya que uno queda estancado.

Bueno Amigo gracias de todas formas.
Byeeee.
  #4 (permalink)  
Antiguo 12/02/2005, 12:33
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 5 meses
Puntos: 7
bueno.
los metodos que estan "deprecated" ( no me se la traduccion -- NO es deprecado -- ) son aquellos que ya no son utilizados o soportados por la JVM.

si te metes a la pagina de sun, veras que constantemente (o semiconstantemente) van actualiando su compilador , y en cada nueva version van quitando a agregando metodos.

el libro que tienes, deseguro es de una version mas vieja.

ahora, para compilar para que los acepte, ya depende de tu IDE (o igual en el codigo se puede hacer algo, pero la verdad no se)

de todas formas, ese codigo no hace gran cosa, mas que dibujar unos cuantos botones y crear un frame.
mejor saltate a otro ejemplo, o busca sobre "frames" en internet.
  #5 (permalink)  
Antiguo 12/02/2005, 16:52
 
Fecha de Ingreso: enero-2005
Mensajes: 22
Antigüedad: 19 años, 3 meses
Puntos: 0
Hey ahora otro programa con dos errores. ayuda

Blackwind

Gracias por tus comentarios y consejos de donde buscar y todo eso.
Bueno te comento que el código anterior yo le había cambiado algunos nombres de las clases, al copiarlo exactamente igual a como estaba el libro corrió sin problemas el error fue mió, pero eso no significa que el libro no tenga errores pues me he dado cuenta de algunos.

Tenes razón los programas son muy sencillos pero como hasta ahora estoy aprendiendo me parecen algo complicados, bueno he seguido haciendo los ejemplos del libro pero ahora copiándolos exactamente igual al libro.
Pero en un ejercicio similar de Frames me sale dos errores ya lo he revisado minuciosamente y me asegure que lo copie exactamente igual al libro, y no encuentro el error.
Aquí esta el código.

import java.awt.*;
import java.applet.*;

public class MyFrame3 extends Applet
{
private Button showFrame;
private DemoFrame f;
private int number;
private String frameTitle, title;

//Constructor por omisión
public MyFrame3()
{
this("Marco");
}

public MyFrame3(String t)
{
super("Aplicacion");

String s = "Oprima aqui para ver el marco";

number = 0;
title = t;
showFrame = new Button(s);
add("South", showFrame);

resize(300, 100);
show();
}

public boolean handleEvent(Event e)
{
if(e.id == Event.ACTION_EVENT)
{
action(e, e.arg);
return true;
}

else if(e.id == Event.WINDOW_DESTROY)
{
removeFrame(this);
System.exit(0);
return true;
}

return super.handleEvent(e);
}

public boolean action(Event e, Object o)
{
if(e.target == showFrame)
{
if(f != null)
{
removeFrame(f);
}

number++;
frameTitle = title + " " + String.valueOf(number);

f = new DemoFrame(frameTitle);
}

return true;
}

public void removeFrame(Frame w)
{
w.hide();
w.dispose();
}

public static void main( String args[] )
{
MyFrame3 myself;

if(args.length == 0)
{
myself = new MyFrame3();
}

else
{
myself = new MyFrame3( args[0] );
}
}
}

class DemoFrame extends Frame
{
private Button a, b, c, d;

public DemoFrame(String s)
{
super(s);

a = new Button("amarillo");
b = new Button("rojo");
c = new Button("azul");
d = new Button("verde");

//El diseño por omisión es BorderLayout
add("North", a);
add("East", b);
add("South", c);
add("West", d);

resize(200, 200);
show(); //Exhibir el marco
}

public boolean handleEvent(Event e)
{
if(e.id == Event.WINDOW_DESTROY)
{
hide();
dispose();
return true;
}

return super.handleEvent(e);
}

public boolean action(Event e, Object o)
{
if(e.target == c)
{
setBackground(Color.blue);
}

else if(e.target == b)
{
setBackground(Color.red);
}

else if(e.target == d)
{
setBackground(Color.green);
}

else
{
setBackground(Color.yellow);
}

repaint();
return true;
}
}
  #6 (permalink)  
Antiguo 12/02/2005, 18:22
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 5 meses
Puntos: 7
si, tiene 2 errores, pero no entiendo porque.
donde dice
Super ("aplicacion");
y
removeFrame(this);

busque en la api y no encontre ningun metood que se llame asi, pero lo extraño
es que lo usan en otra parte del codigo y ahi no marca error.
en teoria, le tienes que pasar que frame es el que quiere quitar, y no cheque bien pero creo que en esa parte, no estas indicando el frame .

por otra parte, tiene yo solo he trabajado una vez con frames (cuando hice el juego de battleship :D ), pero nunca ese tipo de funciones, y no recuerdo ya muchas cosas.
mi recomendacion es que no sigas los ejemplos del libro, deitel and deitel son buenos, pero cuando ya sabes, para empezar a aprender me parecen un tanto confusos.......
mejor entiende todo, y crea tu propia app mucho mas sencilla que solo haga una de las cosas que viene ahi, luego otra con otra y asi......
y al final las juntas. Te sera mas facil que poner muchas cosas de jalon
al menos, eso es lo que yo haria/hago/hacia
  #7 (permalink)  
Antiguo 13/02/2005, 09:06
 
Fecha de Ingreso: enero-2005
Mensajes: 22
Antigüedad: 19 años, 3 meses
Puntos: 0
Sonrisa seguire Adelante...........

Si veo los mismos 2 errores pero no se que los causa, dejare por el momento este programita de tenido pero cuando domine un poco más los frames lo retomare.

Hey si tienes razón backwind es mejor asimilar cosa por cosa, pero también creo que seguiré utilizando a deitel pero como segunda referencia, he encontrado algunos documentos para principiantes en Java, y empezare a utilizarlos, pues tengo muchas ganas de aprender este lenguaje.

Tu sabes o alguna otra persona sabe donde pueda descargar un programa de un laberinto o alguna cosa que se le parezca que utilice parte grafica que se pueda controlar.

Gracias de Antemano.
  #8 (permalink)  
Antiguo 13/02/2005, 10:50
 
Fecha de Ingreso: febrero-2005
Mensajes: 6
Antigüedad: 19 años, 2 meses
Puntos: 0
MyFrame3

Tus dos errores salen son:
symbol : constructor Applet (java.lang.String)
location: class java.applet.Applet
super("Aplicacion");

Este error te sale por que estas heredando de la clase Applet, pero esta clase no tiene un constructor que reciba un string. y de ahi el error, talves tu quieres eredar de la clase Frame, por que esta si tiene un constructor que tiene que recibe un String.

D:\My java\ayuda\MyFrame3.java:42: removeFrame(java.awt.Frame) in MyFrame3 cannot be applied to (MyFrame3)
removeFrame(this);

Este error te sale por que el metodo que estas usando, que tu hiciste es
removeFrame(Frame fr);
ahi dices que removeras un frame pero al invocarlo utilizas this lo cual indica que le estas mandando un Applet, talves deverias crear Objeto Frame para envialre este ase metodo asi recien funcionara.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:10.