Bienvenido: ( Identificarse | Registrarse )      
Foros de Trucos Windows
 1 2 3 
Closed TopicStart new topicStart Poll

Outline · [ Estándar ] · Lineal+

> Dudas...., Robbie!! XD

blizknight
post Jun 7 2006, 03:14 AM
Publicado: #1


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??


User is offlineProfile CardPM
Go to the top of the page
+Quote Post
rob1104
post Jun 7 2006, 05:47 AM
Publicado: #2


Xbox Live... The best thing ever happened around videogames
Group Icon

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 wink.gif
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 bye1.gif


User is offlineProfile CardPM
Go to the top of the page
+Quote Post
blizknight
post Jun 10 2006, 02:42 AM
Publicado: #3


Maestro
*****

Grupo: Members
Mensajes: 265
Registrado: 12-September 04
Miembro nº: 18.538



heehe... oks como siempre me podes hacer una explicacion de cada parte XD
gracias


User is offlineProfile CardPM
Go to the top of the page
+Quote Post
blizknight
post Jun 12 2006, 09:33 PM
Publicado: #4


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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
rob1104
post Jun 13 2006, 03:59 AM
Publicado: #5


Xbox Live... The best thing ever happened around videogames
Group Icon

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{...}


bye1.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
blizknight
post Jun 14 2006, 02:45 AM
Publicado: #6


Maestro
*****

Grupo: Members
Mensajes: 265
Registrado: 12-September 04
Miembro nº: 18.538



oks creo que ya entendi, con respecto a lo de los frames tambien seria lo mismo usar Jpanel?..
y esto seria una forma rapida de declarar y agregar mas rapidamente?

JButton boton1 = new JButton("Ir a Ventana 2");
JButton boton2 = new JButton("Ir a Ventana 1");

y aca por que se usa el final?? que hace??

final JFrame ventana1 = new JFrame("Soy la ventana 1");
final JFrame ventana2 = new JFrame("Soy la ventana 2");
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
rob1104
post Jun 14 2006, 04:05 AM
Publicado: #7


Xbox Live... The best thing ever happened around videogames
Group Icon

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 bye1.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
blizknight
post Jun 15 2006, 02:36 AM
Publicado: #8


Maestro
*****

Grupo: Members
Mensajes: 265
Registrado: 12-September 04
Miembro nº: 18.538



gracias me quedo muy claro XD ahora voy a ponerlo en practica, por cierto cual es la diferencia del jpanel y el Jframe
el jpanel seria como ventanas y el frame seria como una lengueta de la ventana?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
rob1104
post Jun 15 2006, 02:53 AM
Publicado: #9


Xbox Live... The best thing ever happened around videogames
Group Icon

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



No exactamente, mira comparandolo con visual basic, has de cuenta que cada form es un JFrame, o sea un JFrame es una ventana con barra de titulo y botones de control etc... un JPanel equivaldria mas o menos precisamente al frame de Visual Basic, hasta le puedes poner un tipo de borde para que se vea asi tongue.gif, puedes poner tantos JPanel quieras en el JFrame... bye1.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
blizknight
post Jun 15 2006, 03:57 AM
Publicado: #10


Maestro
*****

Grupo: Members
Mensajes: 265
Registrado: 12-September 04
Miembro nº: 18.538



aun no me queda claro no seria al reves el jpanel es como un fram y el jframe serai como una ventana?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
rob1104
post Jun 15 2006, 06:04 AM
Publicado: #11


Xbox Live... The best thing ever happened around videogames
Group Icon

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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
blizknight
post Jun 15 2006, 03:47 PM
Publicado: #12


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 new18.gif

sorry por tantas preguntas es que cada ves que investigo me salen mas
new18.gif


saludos y gracias de nuevo XD
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
blizknight
post Jun 15 2006, 06:16 PM
Publicado: #13


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 flowers.gif
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;
}
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
rob1104
post Jun 16 2006, 12:57 AM
Publicado: #14


Xbox Live... The best thing ever happened around videogames
Group Icon

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 herencia

Java 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 bye1.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
blizknight
post Jun 16 2006, 02:40 AM
Publicado: #15


Maestro
*****

Grupo: Members
Mensajes: 265
Registrado: 12-September 04
Miembro nº: 18.538



pues si ya lo entendi, lo de la herencia tambien hace que ya no se necesite definir la variable???

QUOTE
JFrame ventana;

ventana1=new Ventana(); //Se crea la primera ventana
ventana2=new Ventana(); //Se crea la segunda ventana


y esto solo funciona en cuanto la creacion de un frame no?

pd: hay un post mas arriba que no leiste new18.gif
saludos y gracias por ser tan comprensivo conmigo flowers.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
 1 2 3
Closed TopicTopic OptionsStart new topic

Collapse

> Topicos similares

dos dudas hughl 79 1 Sep 25 2008, 04:17 AM
By: jando
DUDAS chungopetaka 92 1 Sep 17 2008, 06:32 PM
By: 888
DUDAS SOBRE "DAEMON TOOLS" lordrein 351 1 Aug 29 2008, 12:49 PM
By: rioj
DUDAS SOBRE "DAEMON TOOLS" lordrein 15 0 Aug 29 2008, 12:35 PM
By: lordrein