|
|
|
|
Outline ·
[ Estándar ] ·
Lineal+
Dudas...., Robbie!! XD
| blizknight |
Jun 7 2006, 03:14 AM
|
Maestro
    
Grupo: Members
Mensajes: 265
Registrado: 12-September 04
Miembro nº: 18.538

|
Bueno he aqui mis dudas... 1.- por que me bota que la variable no ha sido inicializada y al aumentarle a la declaracion un =0 me funciona.... pues no entendia eso.. les dejo un ejemplo en el que me lo permitio y uno en el que no ... el que permitio CODE //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"); En donde tuve poner =0 CODE //declaracion de variables int mt, b; int boni=0; mt = Integer.parseInt(tmt.getText()); if(mt>5000) boni =(mt-5000)/500;
... y creo que habia otros casos mas parecidos a estos que ocurria el mismo error... si alguien me dice en que casos ocurre estaria muy agradecido.... y por cierto un code para desarmar una cadena??
|
|
|
|
|
| rob1104 |
Jun 7 2006, 05:47 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

|
Hola blizknight salu222 Eso de no inicializar las variables al declaralas, es uno de los tantos malos habitos de programacion que crea Visual Basic (experiencia), la verdad no sabria decirte cuando si y cuando no se debe inicializar la variable al momento de crearla, pero debes tomar en cuenta que en java Siempre debemos inicializar una variable. Al momento de leer el contenido de una variable, el compilador de Java siempre verifica que tenga un valor. De lo contrario el programa no compilará y mostrará el error., Asi que toma un buen habito de siempre inicializar las variables al momento de crearlas ejemplo: CODE int a=8; int b=0; int c=300; String hola="Hola Mundo"; Es un muy buen habito que te hara la programacion mas facil y mas limpia estructuralmente y visualmente. 2.- Este codigo recorre un String caracter por caracter y lo imprime verticalmente analizalo  CODE import java.io.*; public class cadena { public static void main(String args[]) throws IOException { BufferedReader teclado=new BufferedReader( new InputStreamReader(System.in)); String Cadena; char x; System.out.print("Introduce una cadena: "); Cadena=teclado.readLine(); for(int a=0;a<Cadena.length();a++) { x=Cadena.charAt(a); System.out.println(x); } } } Un saludo
|
|
|
|
|
| blizknight |
Jun 12 2006, 09:33 PM
|
Maestro
    
Grupo: Members
Mensajes: 265
Registrado: 12-September 04
Miembro nº: 18.538

|
QUOTE(blizknight @ Jun 10 2006, 02:42 AM) heehe... oks como siempre me podes hacer una explicacion de cada parte XD gracias Bueno quiero poner un par de dudas mas que me han surgido para hacer un programa, 1.- Como hago un menu en donde cuando se le de click a cierto boton te lleve a la sgt ventana en donde este la otra parte del programa(y asi crear varias partes del programa como un para configuracion) 2.-como es que se crean los options buttons y como es que se les llama en el algoritmo (se necesita un gettext?)( o defrente se procede con un if opt == true) Bueno espero que no sea muxa molestia gracias robbie XD
|
|
|
|
|
| rob1104 |
Jun 13 2006, 03:59 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

|
Hola, respecto al codigo de leer caracter por caracter es algo demasiado facil que no tiene mucho que explicarse, supongo que querras el algoritmo que es lo mas laborioso de entender, pero bueno aqui va todo paso a paso comentado CODE import java.io.*; //importa los metodos de la clase io /*Comienza la clase*/ public class cadena { /*Comienza el metodo principal y evita las excepciones IO*/ public static void main(String args[]) throws IOException { BufferedReader teclado=new BufferedReader //Se crea un stream (new InputStreamReader(System.in)); para leer del teclado String Cadena; //Declaro una variable tipo String (almacenar caracteres) char x; //Declaro una variable para guardar el caracter leido System.out.print("Introduce una cadena: "); //mensaje en pantalla Cadena=teclado.readLine(); //Leer el teclado y almacenarlo en la var Cadena //Ciclo for, desde que a es igual a 0, hasta que a sea el total de caracteres de la cadena introducida, a aumentara uno cada vez for(int a=0;a<Cadena.length();a++) { //se almacena en la variable x el caracter de la posicion a x=Cadena.charAt(a); System.out.println(x); lo imprime y deja un espacio } } } Respecto a la primera duda no entiendo muy bien, creo que te refieres a pasar de un JFrame a otro y hacer desaparecer el anterior, algo asi: CODE import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ejemplo1 { public static void main(String args[]) { final JFrame ventana1 = new JFrame("Soy la ventana 1"); final JFrame ventana2 = new JFrame("Soy la ventana 2"); JButton boton1 = new JButton("Ir a Ventana 2"); JButton boton2 = new JButton("Ir a Ventana 1"); ventana1.setBounds(30,30,640,480); ventana1.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); ventana2.setBounds(60,60,640,480); Container c1 = ventana1.getContentPane(); Container c2 = ventana2.getContentPane(); c1.setLayout(null); c2.setLayout(null); c1.add(boton1); c2.add(boton2); boton1.setBounds(450,400,130,20); boton2.setBounds(450,400,130,20); ventana1.setVisible(true); boton1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ventana1.setVisible(false); ventana2.setVisible(true); } }); boton2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ventana2.setVisible(false); ventana1.setVisible(true); } }); } } Y respecto a lo segundo, para verificar si un JRaddioButton (creo que te refieres a esos :S) esta marcado o no tienes que referirte al metodo isSelected()CODE if(opt.isSelected()==true{...}
|
|
|
|
|
| rob1104 |
Jun 14 2006, 04: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

|
Saludos Blizknight, respecto a tu primera duda tienes razon, para hacer lo que pides es mejor usar un JPanel, pero toma en cuenta que solo puedes cambiar de JPanel pero no estaras cambiando de JFrame, simplemente haces invisible uno y muestras otro y ya se muestran los controles de dicho panel, la jerarquia seria QUOTE +JFrame1 -JPanel1 -JButton1 -JLabel1 -JPanel2 -JButton2 -JLabel2 Respecto a la segunda duda, lo que estoy haciendo es precisamente inicializar la variable al declararla, esto con los componentes no es necesario pero si es mas rapido, es decir: CODE JButton boton1 = new JButton("Boton"); es igual a CODE //Declaracion de variables JButton boton1; .... .... boton1=new JButton(); boton1.setText("Boton"); Y por ultimo, como sabras, en Visual Basic existen variables y constantes, verdad??, las variables las declaras generalmente con "Dim" y las constantes con "Const", bien, en java se utiliza el modificador final para definir constantes... ejemplo: CODE int a,b; final pi=3.1416
Hay declaro 2 variables enteras a y b, y despues una constante pi, que como se sabe las constantes nunca cambian su valor. Si declaramos un método como final, indicaremos que no puede ser sobreescrito en clases heredadas, por lo que mantendrá su implementación. Si es la clase la que lleva el modificador, entonces nos aseguramos de que nadie pueda heredar de dicha clase (la castramos, vaya). Por último, si declaramos una propiedad como final, crearemos una constante, ya que dicha variable se puede inicializar, pero no modificar. Un saludo
|
|
|
|
|
| rob1104 |
Jun 15 2006, 06:04 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

|
QUOTE aun no me queda claro no seria al reves el jpanel es como un fram y el jframe serai como una ventana? Pero si eso fue lo que dije :S esta mas que claro asi: QUOTE Java Visual Basic JFrame = Form JPanel = Frame salu2 :D
|
|
|
|
|
| blizknight |
Jun 15 2006, 03:47 PM
|
Maestro
    
Grupo: Members
Mensajes: 265
Registrado: 12-September 04
Miembro nº: 18.538

|
hahaha ahora creo que ya si es que me panel me suena a ventana y frame a frame pero en este caso es un form por eso me daba vueltas XD por cierto en el code del final por que lo utilizas para definir un frame?? y que hace el container? en el caso de un radio button y un checkboxgroup ambos utilizan la misma sentencia para obtener el estado ? if(opt.isSelected()==true{...} checkbox es para poner el del cuadradito y el checkboxgroup es para poner los de radio no? hay mas? todos los manuales que encuentro parece estar desactualizados ya que el java me vota error -.- CheckboxGroup cbg = new CheckboxGroup(); add(new Checkbox("Rojo", cbg, false)); add(new Checkbox("Azul", cbg, false)); add(new Checkbox("Verde", cbg, true)); add(new Checkbox("Negro", cbg, false)); ... tambien existe el metodo abreviado add ?? en ves de poner getcontentPane y lo agrega a la ventana predeterminada no? opt = new Checkbox("Relleno"); opt.setBounds(20,20,75,25); add(opt); como es que se deben crear? me das un ejemplo y como agrego objetos en un jpanel?? creo que para responder tantas seria bueno que me hagas un programa que tenga frames con paneles checkbox y checkbox groups para verlo yo mismo como se hace , si es que no es mucha molestia sorry por tantas preguntas es que cada ves que investigo me salen mas saludos y gracias de nuevo XD
|
|
|
|
|
| blizknight |
Jun 15 2006, 06:16 PM
|
Maestro
    
Grupo: Members
Mensajes: 265
Registrado: 12-September 04
Miembro nº: 18.538

|
Bueno aca estube intentado ya se como funciona el jpanel y el checkbox pero me falta lo de arribita T.T p1 = new JPanel(); p1.setLayout(null); p1.setBounds(50,50,200,150); getContentPane().add(p1); opt = new Checkbox("Relleno"); opt.setBounds(20,20,75,25); p1.add(opt); p1.setVisible(false); en este ejemplo que me enseñaste hace tiempo estas usando jframe??? no?? ya que no veo donde declaras XD QUOTE public class Ventana extends JFrame { public static void main(String args[]) { ventana1=new Ventana(); //Se crea la primera ventana ventana2=new Ventana(); //Se crea la segunda ventana ventana1.setTitle("Ventana 1"); ventana1.setBounds(100,100,300,200); ventana1.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
ventana2.setTitle("Ventana 2"); ventana2.setBounds(450,100,300,200); etiqueta1 = new JLabel("Norte"); etiqueta2 = new JLabel("Sur"); etiqueta3 = new JLabel("Este"); etiqueta4 = new JLabel("Oeste "); etiqueta5 = new JLabel("Centro");
//Ejemplo de BorderLayout (ya no use getContentPane() directamente si no que se usa relaconado el jframe) ventana1.setLayout(new BorderLayout()); ventana1.add(etiqueta1,BorderLayout.NORTH); ventana1.add(etiqueta2,BorderLayout.SOUTH); ventana1.add(etiqueta3,BorderLayout.EAST); ventana1.add(etiqueta4,BorderLayout.WEST); ventana1.add(etiqueta5,BorderLayout.CENTER); etiqueta1.setHorizontalAlignment(SwingConstants.CENTER); etiqueta3.setHorizontalAlignment(SwingConstants.CENTER); etiqueta5.setHorizontalAlignment(SwingConstants.CENTER); etiqueta2.setHorizontalAlignment(SwingConstants.CENTER); ventana2.setLayout(new GridLayout(2,2)); //GridLayout con 2 filas y dos columnas (tipo excel)
etiqueta6=new JLabel("Fila Uno Columna uno"); etiqueta7=new JLabel("Fila Uno Columna Dos"); etiqueta8=new JLabel("Fila Dos Columna Uno"); etiqueta9=new JLabel("Fila Dos Columna Dos"); ventana2.add(etiqueta6); ventana2.add(etiqueta7); ventana2.add(etiqueta8); ventana2.add(etiqueta9); //Muestra los formularios en pantalla ventana1.setVisible(true); ventana2.setVisible(true); } //Declaracion de variables (ahora tienen que ser estaticas porque estoy trabajando con varios JFrames) private static Ventana ventana1; private static Ventana ventana2; private static JLabel etiqueta1; private static JLabel etiqueta2; private static JLabel etiqueta3; private static JLabel etiqueta4; private static JLabel etiqueta5; private static JLabel etiqueta6; private static JLabel etiqueta7; private static JLabel etiqueta8; private static JLabel etiqueta9; }
|
|
|
|
|
| rob1104 |
Jun 16 2006, 12:57 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

|
Facil amigo :D, llego la hora que aprendas algo muy importante de la POO (programacion orientada a objetos) la herenciaJava permite el empleo de la herencia , característica muy potente que permite definir una clase tomando como base a otra clase ya existente. Esto es una de las bases de la reutilización de código, en lugar de copiar y pegar. Como puedes ver la clase ventana hereda de la clase JFrame, ( extends JFrame) por lo tanto al ehredar todos los metodos no es necesario declararlas como tipo JFrame, si no como tipo Ventana(), porque Ventana hereda de JFrame por eso hize CODE ventana1=new Ventana(); //Se crea la primera ventana ventana2=new Ventana(); //Se crea la segunda ventana si no hubiera puesto extends JFrame tndria que haber puesto CODE ventana1=new JFrame(); //Se crea la primera ventana ventana2=new JFrame(); //Se crea la segunda ventana espero quede claro salu2
|
|
|
|
|
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
|