|
|
|
|
Outline ·
[ Estándar ] ·
Lineal+
error en el codigo de java...., principiante T.T
| blizknight |
Apr 11 2006, 10:09 PM
|
Maestro
    
Grupo: Members
Mensajes: 265
Registrado: 12-September 04
Miembro nº: 18.538

|
Bueno comencea aprender java hace poco ... y queria analizar un code ... lo pase del libro al compilador.. pero me da error... alguien me ayuda ??--- el error esta en negrita.. y la verdad que analizar el codigo es un poco dificil y no se todoavia para que sirven todo los comandos... si alugien se toma la molestia de explicarme un poco se lo agradeceria... import java.awt.event.*; import java.awt.*; import javax.swing.*; Public class Programa1 extends JApplet implements ActionListener { //declaracion de variables jbutton btnprocesar; jtextarea txts; jlabel lblhoras; jlabel lbltarifa; jtextfield txthoras; jtextfield txttarifa; jscrollpane scpscroll; //crea la interfaz grafica de usuario GUI public void init() { getcontentpane().setlayout(null); //lblhoras lblhoras = new jlabel ("horas"); lblhoras.setbounds(15, 15, 45, 23); getcontentpane().add(lblhoras); //lbltarifa lbltarifa = new jlabel ("tarifa"); lblhoras.setbounds(15, 39, 45, 23); getcontentpane().add(lbltarifa); //txthoras txthoras = new jtextfield(); txthoras.setbounds(61, 15, 107, 23); getcontentpane().add(txttarifa); //txttarifa txttarifa = new jtextfield(); txttarifa.setbounds(61, 39, 107, 23); getcontentpane().add(txttarifa); //btn procesar btnprocesar = new jbutton("procesar"); btnprocesar.setbounds(305, 15, 101, 23); btnprocesar.addactionlistener(this); getcontentpane().add(btnprocesar); //txts txts= new jtextarea(); txts.setfont(new font("monospaced", 0, 12)); //scpscroll scpscroll = new jscrollpane(txts); scpscroll.setbounds(15, 75, 394, 130); getcontentpane().add(scpscroll); } //procesa eventes de tipo action event public void actionperformed(actionevent e){ //declaracion de variables double horastrab, tarifahor; double suedobas, montoboni, sueldobru, montodesc, sueldonet; //entrada de datos horastrab = double.parseDouble(txthoras.gettext()); tarifahor = double.parseDouble(txttarifa.gettext()); //calculo demontos sueldobas = horastrab*tarifahor; montoboni = 0.20*sueldobas; sueldobru = sueldobas+montoboni; montodesc = 0.10*sueldobru; sueldonet = sueldobru-montodesc; //salida de resultados txts.settext("reporte genera\n"); txts.append("sueldo basico : s/. " + sueldobas + "\n"); txts.append("Bonificacion : s/. " + montoboni + "\n"); txts.append("sueldo bruto : s/. " + sueldobru + "\n"); txts.append("descuentos : s/. " + montodesc + "\n"); txts.append("Sueldo Neto : s/. " + sueldonet + "\n"); } }
|
|
|
|
|
| rob1104 |
Apr 12 2006, 12:20 AM
|
Xbox Live... The best thing ever happened around videogames

Grupo: Moderadores
Mensajes: 1.665
Registrado: 7-March 05
Desde: Matamoros, Tamaulipas, Mexico
Miembro nº: 93.342

|
Ah compañero lamento el codigo esta correcto, con la pequeña, pero pequeña excepcion de que JAVA a diferencia de otros lenguakes (Visual Basic  ) distingue de mayusculas y minusculas, tienes unos terribles errores de ortografia eso es todo,  , y se me hace muy raro dado que dices que lo copiaste de un libro  , ten mucho cuidado con eso a la hora de programar No lo tomes a mal, es como critica constructiva hermano, asi deberia estar: CODE import java.awt.event.*; import java.awt.*; import javax.swing.*;
public class Programa1 extends JApplet implements ActionListener { //declaracion de variables JButton btnprocesar; JTextArea txts; JLabel lblhoras; JLabel lbltarifa; JTextField txthoras; JTextField txttarifa; JScrollPane scpscroll; //crea la interfaz grafica de usuario GUI public void init() { getContentPane().setLayout(null); //lblhoras lblhoras = new JLabel ("horas"); lblhoras.setBounds(15, 15, 45, 23); getContentPane().add(lblhoras); //lbltarifa lbltarifa = new JLabel ("tarifa"); lblhoras.setBounds(15, 39, 45, 23); getContentPane().add(lbltarifa); //txthoras txthoras = new JTextField(); txthoras.setBounds(61, 15, 107, 23); getContentPane().add(txttarifa); //txttarifa txttarifa = new JTextField(); txttarifa.setBounds(61, 39, 107, 23); getContentPane().add(txttarifa); //btn procesar btnprocesar = new JButton("procesar"); btnprocesar.setBounds(305, 15, 101, 23); btnprocesar.addActionListener(this); getContentPane().add(btnprocesar); //txts txts= new JTextArea(); txts.setFont(new Font("monospaced", 0, 12)); //scpscroll scpscroll = new JScrollPane(txts); scpscroll.setBounds(15, 75, 394, 130); getContentPane().add(scpscroll); } //procesa eventes de tipo action event public void actionPerformed(ActionEvent e) { //declaracion de variables double horastrab, tarifahor; double sueldobas, montoboni, sueldobru, montodesc, sueldonet; //entrada de datos horastrab = Double.parseDouble(txthoras.getText()); tarifahor = Double.parseDouble(txttarifa.getText()); //calculo demontos sueldobas = horastrab*tarifahor; montoboni = 0.20*sueldobas; sueldobru = sueldobas+montoboni; montodesc = 0.10*sueldobru; sueldonet = sueldobru-montodesc; //salida de resultados txts.setText("reporte genera\n"); txts.append("sueldo basico : s/. " + sueldobas + "\n"); txts.append("Bonificacion : s/. " + montoboni + "\n"); txts.append("sueldo bruto : s/. " + sueldobru + "\n"); txts.append("descuentos : s/. " + montodesc + "\n"); txts.append("Sueldo Neto : s/. " + sueldonet + "\n"); } }
Comparalos y saca tus conclusiones un saludo
|
|
|
|
|
| rob1104 |
Apr 12 2006, 02:06 AM
|
Xbox Live... The best thing ever happened around videogames

Grupo: Moderadores
Mensajes: 1.665
Registrado: 7-March 05
Desde: Matamoros, Tamaulipas, Mexico
Miembro nº: 93.342

|
Pues veo que ya esta un poco comentado el codigo, asi que mejor te agradeceria dudas concretas, es decir que parte del codigo no entiendes, recomiendo que lo compiles y lo corras para que lo analizes, por si las dudas te comento que no es una "aplicacion de escritorio" normal, sino un applet, asi que necesitarias crear una pagina web (puede ser lo mas simple posible) para poder ejecutarlo, y ademas asi como esta no va a correr, veo que le faltan algunos metodos importantes como el start() stop() paint() repaint() .... en fin dale una leida de nuevo al libro y no te limites solo a copiar el codigo.
Saludos
|
|
|
|
|
| rob1104 |
Apr 12 2006, 07:05 AM
|
Xbox Live... The best thing ever happened around videogames

Grupo: Moderadores
Mensajes: 1.665
Registrado: 7-March 05
Desde: Matamoros, Tamaulipas, Mexico
Miembro nº: 93.342

|
Vamos paso a paso (ojo con mayusculas y minusculas) primero localiza esta linea public class Programa1 extends JApplet implements ActionListenervas a cambiar JApplet por JFrame, eso hara que herede los metodos de la clase JFrame en vez de JApplet y asi se puede convertir en una aplicacion de escritorio. Ahora cambia el nombre del metodo init por el del mismo nombre de la clase, esto hara que se convierta en un constructor y agregale estas lineas (las ultimas dos de en medio son opcionales) CODE setSize(430,250); //Tamano de la ventana (ancho x alto) setTitle("MI primer programa"); //TItulo de la ventana setResizable(false); //hace que no se puede redimensionar setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Para salir al dar click en el boton cerrar de la barra de titulo ya que hayas hecho eso, vas a anadir un metodo principal por el cual toda aplicacion Java comienza, dicho metodo debe ser publico, estatico y no debe retornar valores (public static void) y siempre debe llebar el nombre main el cual crea un array tipo String llamado args, dicho metodo debe crear una nueva instancia de el cosntructor Programa1 y hacerla visible, por lo tanto quedaria asi CODE public static void main(String args[]) { new Programa1().setVisible(true) } Agrega esas lineas justo despues que termina el metodo actionPerformed(ActionEvent e); y antes de que cierre la clase (no puede quedar fuera de la clase) Ya con eso correria de no ser por unos errores de concordancia que me acabo de dar cuenta a la hora de compilar QUOTE //lbltarifa lbltarifa = new JLabel ("tarifa"); lblhoras.setBounds(15, 39, 45, 23); getContentPane().add(lbltarifa); Si te fijas pestas ajustando las propiedades de lbltarifa y derepente metes a lblhoras  como esta eso?? cambia eso de lblhoras por lbltarifa QUOTE //txthoras txthoras = new JTextField(); txthoras.setBounds(61, 15, 107, 23); getContentPane().add(txttarifa); Otro error de concordancia, se supone que estas con txthoras, porque metes a txttarifa???, cambialo txthoras Creo que es todo, si ves algo que se me paso, intenta corregirlo por ti mismo (ese tipo de errores pasan por nada mas copiar sin leer) Espero te haya ayudado... un saludo
|
|
|
|
|
| blizknight |
Apr 12 2006, 04:19 PM
|
Maestro
    
Grupo: Members
Mensajes: 265
Registrado: 12-September 04
Miembro nº: 18.538

|
Bueno muxas gracias por tu explicacion!!! pero hay cositas que todavia no entiendo .. el codigo quedaria masomenos asi .... y sobre estos codigos que me diste... aun no se donde ponerlos ... mejor dicho los puse pero me daban.. error asi que los quite ... es que recien estoy empezando  y sobre los erroes de etiqueta ya los corregi fueron por no ver bien por cierto cuando compilo el .java ... me da el bytecode en class no?... de ahi como se ejecuta la aplicacion?? CODE setSize(430,250); //Tamano de la ventana (ancho x alto) setTitle("MI primer programa"); //TItulo de la ventana setResizable(false); //hace que no se puede redimensionar setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Para salir al dar click en el boton cerrar de la barra de titulo CODE public static void main(String args[]) { new Programa1().setVisible(true) } CODE import java.awt.event.*; import java.awt.*; import javax.swing.*;
public class programa1 extends JFrame implements ActionListener { //declaracion de variables JButton btnprocesar; JTextArea txts; JLabel lblhoras; JLabel lbltarifa; JTextField txthoras; JTextField txttarifa; JScrollPane scpscroll;
//crea la interfaz grafica de usuario GUI public void init() { getContentPane().setLayout(null);
//lblhoras lblhoras = new JLabel ("horas"); lblhoras.setBounds(15, 15, 45, 23); getContentPane().add(lblhoras); //lbltarifa lbltarifa = new JLabel ("tarifa"); lbltarifa.setBounds(15, 39, 45, 23); getContentPane().add(lbltarifa); //txthoras txthoras = new JTextField(); txthoras.setBounds(61, 15, 107, 23); getContentPane().add(txthoras); //txttarifa txttarifa = new JTextField(); txttarifa.setBounds(61, 39, 107, 23); getContentPane().add(txttarifa); //btn procesar btnprocesar = new JButton("procesar"); btnprocesar.setBounds(305, 15, 101, 23); btnprocesar.addActionListener(this); getContentPane().add(btnprocesar); //txts txts= new JTextArea(); txts.setFont(new Font("monospaced", 0, 12)); //scpscroll scpscroll = new JScrollPane(txts); scpscroll.setBounds(15, 75, 394, 130); getContentPane().add(scpscroll); }
//procesa eventes de tipo action event public void actionPerformed(ActionEvent e) {
//declaracion de variables double horastrab, tarifahor; double sueldobas, montoboni, sueldobru, montodesc, sueldonet; //entrada de datos horastrab = Double.parseDouble(txthoras.getText()); tarifahor = Double.parseDouble(txttarifa.getText()); //calculo demontos sueldobas = horastrab*tarifahor; montoboni = 0.20*sueldobas; sueldobru = sueldobas+montoboni; montodesc = 0.10*sueldobru; sueldonet = sueldobru-montodesc; //salida de resultados txts.setText("reporte genera\n"); txts.append("sueldo basico : s/. " + sueldobas + "\n"); txts.append("Bonificacion : s/. " + montoboni + "\n"); txts.append("sueldo bruto : s/. " + sueldobru + "\n"); txts.append("descuentos : s/. " + montodesc + "\n"); txts.append("Sueldo Neto : s/. " + sueldonet + "\n"); } }
|
|
|
|
|
| rob1104 |
Apr 12 2006, 04:28 PM
|
Xbox Live... The best thing ever happened around videogames

Grupo: Moderadores
Mensajes: 1.665
Registrado: 7-March 05
Desde: Matamoros, Tamaulipas, Mexico
Miembro nº: 93.342

|
QUOTE Ahora cambia el nombre del metodo init por el del mismo nombre de la clase, esto hara que se convierta en un constructor y agregale estas lineas (las ultimas dos de en medio son opcionales) No vi que hayas cambiado el metodo init por Programa1 QUOTE ya que hayas hecho eso, vas a anadir un metodo principal por el cual toda aplicacion Java comienza, dicho metodo debe ser publico, estatico y no debe retornar valores (public static void) y siempre debe llebar el nombre main el cual crea un array tipo String llamado args, dicho metodo debe crear una nueva instancia de el cosntructor Programa1 y hacerla visible, por lo tanto quedaria asi Me referia a que lo colocaras justo cuando acaba el evento actionPerformed, y te mencione que no estuviera fuera de la clase, no puede haber codigo fuera de una clase (a menos que sea otra clase  ) vas muy bien, solo te falta entender un poco mas de la POO, java es un lenguaje muy facil, mucho mas que c/c++, lo que pasa es que escogiste un ejemplo muy complicado para empezar, el codigo queda asi: CODE import java.awt.event.*; import java.awt.*; import javax.swing.*;
public class Programa1 extends JFrame implements ActionListener { //declaracion de variables JButton btnprocesar; JTextArea txts; JLabel lblhoras; JLabel lbltarifa; JTextField txthoras; JTextField txttarifa; JScrollPane scpscroll; //crea la interfaz grafica de usuario GUI (ves como le cambie el nombre) public Programa1() { setSize(430,250); //Tamanio del formulario setTitle("MI primer programa"); //TItulo del formulario setResizable(false); //Para que no sea redimensionable setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//Para salir al cerrar
getContentPane().setLayout(null); //lblhoras lblhoras = new JLabel ("Horas"); lblhoras.setBounds(15, 15, 45, 23); getContentPane().add(lblhoras); //lbltarifa lbltarifa = new JLabel ("Tarifa"); lbltarifa.setBounds(15, 39, 45, 23); getContentPane().add(lbltarifa); //txthoras txthoras = new JTextField(); txthoras.setBounds(61, 15, 107, 23); getContentPane().add(txthoras); //txttarifa txttarifa = new JTextField(); txttarifa.setBounds(61, 39, 107, 23); getContentPane().add(txttarifa); //btn procesar btnprocesar = new JButton("Procesar"); btnprocesar.setBounds(305, 15, 101, 23); btnprocesar.addActionListener(this); getContentPane().add(btnprocesar); //txts txts= new JTextArea(); txts.setFont(new Font("monospaced", 0, 12)); //scpscroll scpscroll = new JScrollPane(txts); scpscroll.setBounds(15, 75, 394, 130); getContentPane().add(scpscroll); } //procesa eventes de tipo action event public void actionPerformed(ActionEvent e) { //declaracion de variables double horastrab, tarifahor; double sueldobas, montoboni, sueldobru, montodesc, sueldonet; //entrada de datos horastrab = Double.parseDouble(txthoras.getText()); tarifahor = Double.parseDouble(txttarifa.getText()); //calculo demontos sueldobas = horastrab*tarifahor; montoboni = 0.20*sueldobas; sueldobru = sueldobas+montoboni; montodesc = 0.10*sueldobru; sueldonet = sueldobru-montodesc; //salida de resultados txts.setText("reporte genera\n"); txts.append("sueldo basico : s/. " + sueldobas + "\n"); txts.append("Bonificacion : s/. " + montoboni + "\n"); txts.append("sueldo bruto : s/. " + sueldobru + "\n"); txts.append("descuentos : s/. " + montodesc + "\n"); txts.append("Sueldo Neto : s/. " + sueldonet + "\n"); } //Metodo principal public static void main(String args[]) { new Programa1().setVisible(true); } } QUOTE por cierto cuando compilo el .java ... me da el bytecode en class no?... de ahi como se ejecuta la aplicacion?? desde el simbolo del sistema (inicio/ejecutar/cmd <enter> solamente tecleas java nombredetuaplicacion (sin el .class) en tu caso seria CODE java Programa1 Aunque si tienes un ide, como el blueJ, puedes ejecutarla desde ahi, busca algun boton que diga run o algo asi... un saludo
|
|
|
|
|
| rob1104 |
Apr 12 2006, 04:50 PM
|
Xbox Live... The best thing ever happened around videogames

Grupo: Moderadores
Mensajes: 1.665
Registrado: 7-March 05
Desde: Matamoros, Tamaulipas, Mexico
Miembro nº: 93.342

|
Como te mencione no debiste empezar con ese codigo, hubieras empezado con algo mas sencillo, como este: CODE /* *hola.java */
import javax.swing.*; //Importa las clases del paquete javax.swing
//Inicio de la clase hola que hereda los metodos de la clase JFrame public class hola extends JFrame { public hola() //Inicio del constructor (debe llamarse igual que la clase) { setSize(300,200); //Tamanio del formulario setTitle("Hola Mundo"); //Titulo setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Salir al cerrar setResizable(false); //no se puede redimensionar getContentPane().setLayout(null); //Establece el administrador de diseno nulo etiqueta1=new JLabel(); //se crea una nueva etiqueta llamada etiqueta1 etiqueta1.setText("Hola Mundo"); //Establece el texto de la etqieuta getContentPane().add(etiqueta1); //Agrega la etiqueta al formulario etiqueta1.setBounds(110,70,68,16);//Establece las coordenadas de la etiqueta equivalente en vb a (left,top,width,height) }
/**Metodo Principal*/ public static void main(String args[]) { new hola().setVisible(true); //Crea una nueva Instancia del constructor hola y la hace visible }
//Declaracion de variables private JLabel etiqueta1; } Un saludo
|
|
|
|
|
| rob1104 |
Apr 12 2006, 06:26 PM
|
Xbox Live... The best thing ever happened around videogames

Grupo: Moderadores
Mensajes: 1.665
Registrado: 7-March 05
Desde: Matamoros, Tamaulipas, Mexico
Miembro nº: 93.342

|
En el codigo que te puse arriba esta como debe estar, si te fijas bien ya estan implementadas todas las lineas que te dije mas arriba y asi al compilarlo ya deberia correr, y tambien en el post anterior te dije como ejecutar el .class, desde el simbolo del sistema (y en la ruta donde este la clase) teclea QUOTE java nombredelaclase (sin el .class) en tu caso CODE java Programa1 Tambien tienes que ajustar el classpath, asi que antes de hacer eso, fijate en que ruta esta el .class, por ejemplo si esta en c:\Java\ejemplos\Programa1.class, debes teclear esto en el simbolo del sistema: CODE set classpath=c:\Java\ejemplos\ y ya despues CODE java Programa1 Nota: Como ya te lo mencione tambien, en el mismo IDE, puedes ejecutar el .class, busca un boton o un menu que diga run y de ahi la puedes correr para hacer pruebas, cual es el IDE que usas??, NetBeans, Eclipse, JCreator o el block de notas?? o algun otro? Un saludo
|
|
|
|
|
| rob1104 |
Apr 12 2006, 11:47 PM
|
Xbox Live... The best thing ever happened around videogames

Grupo: Moderadores
Mensajes: 1.665
Registrado: 7-March 05
Desde: Matamoros, Tamaulipas, Mexico
Miembro nº: 93.342

|
Asi a simple vista diria que no "compilaste" el codigo, es decir no creaste el .class, , solo le diste a execute file... Solicion: click en el menu Build y seleccionar Compile File Ahora si a correr la clase un saludo
|
|
|
|
|
Suscribirse a esta discusión
Recibirás una notificación vía correo cuando haya una respuesta y no estés activos en los foros.
Suscribirse a este foro
Recibirás una notificación vía correo cuando haya una nueva discusión y no estés activo en los foros.
Bajar/imprimir
Podrás bajar esta discusión en varios formatos o ver una versión apta para impresora.

Topicos similares

Topicos similares
|