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

Pasar valor de un random a un jtextField?

Estas en el tema de Pasar valor de un random a un jtextField? en el foro de Java en Foros del Web. Hola, buenas tardes, estoy muy verde en esto de java y necesito vuestra ayuda, el caso esque tengo que crear un programa que tenga y ...
  #1 (permalink)  
Antiguo 21/04/2012, 10:58
 
Fecha de Ingreso: abril-2012
Mensajes: 9
Antigüedad: 12 años
Puntos: 0
Pasar valor de un random a un jtextField?

Hola, buenas tardes, estoy muy verde en esto de java y necesito vuestra ayuda, el caso esque tengo que crear un programa que tenga y boton que genere 6 numeros aleatorios y lo ponga en 6 jtextfield diferentes.

Sé como generar el random, pero no se como pasar el valor del random al jTextField.


public static void main(String args[]) {


int p = (int) Math.round(Math.random()*6);
System.out.println(p);




.------------------------

Un saludo, gracias!
  #2 (permalink)  
Antiguo 21/04/2012, 12:13
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Pasar valor de un random a un jtextField?

elTextField.setText(p);

Si "no traga" usa

elTextField.setText(Intgeger.toString(p));

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 21/04/2012, 12:47
 
Fecha de Ingreso: abril-2012
Mensajes: 9
Antigüedad: 12 años
Puntos: 0
Respuesta: Pasar valor de un random a un jtextField?

Hola!, muchas gracias por la respuesta, lo he puesto y bueno, antes me salia como un codigo raro pero ahora con lo tuyo, me da todo el rato el valor 0, llevo toda la tarde aqui mirando y mirando codigo en internet pero nada :S no se que hacer para que vaya dando valores del 1 al 6 sin que sea en el System.out

dejo el código como queda ahora:



private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

jTextField1.setText(Integer.toString(aleatorio));



}


public static void main(String args[]) {


int aleatorio = (int) Math.round(Math.random()*6);
  #4 (permalink)  
Antiguo 21/04/2012, 13:44
 
Fecha de Ingreso: abril-2012
Mensajes: 106
Antigüedad: 12 años
Puntos: 2
Respuesta: Pasar valor de un random a un jtextField?

hola no se si ya encontrastes la respuesta pero bueno si no yo te la dejo mas o menos asi
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

int []numeros;//aqui se declara el areglo
numeros=new int [6]; //el areglo tiene seis elementos
for (int i = 0; i<6; i++){
numeros[i]=(int)Math.floor((Math.random()*(100))); //crea numeros aleatorios

}
//los jtexfield recogen los numeros aleatorios almacenados en un areglo
jTextField1.setText(numeros[0]);
jTextField2.setText(numeros[1]);
jTextField3.setText(numeros[2]);
jTextField4.setText(numeros[3]);
jTextField5.setText(numeros[4]);
jTextField6.setText(numeros[5]);

}
  #5 (permalink)  
Antiguo 21/04/2012, 14:14
 
Fecha de Ingreso: abril-2012
Mensajes: 9
Antigüedad: 12 años
Puntos: 0
Respuesta: Pasar valor de un random a un jtextField?

Muchas gracias por tu respuesta, pero esque sigue sin irme, no me deja poner este valor.

jTextField1.setText(String.valueOf(numeros));

El valor "numeros", me da error, ya sea con el string o sin nada como me lo has puesto, la verdad que estoy aqui quemado sin saber que poner :S


Todo quedaria asi:

---------------

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

jTextField1.setText(String.valueOf(numeros));


// TODO add your handling code here:
}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {

int []numeros;//aqui se declara el areglo
numeros=new int [6]; //el areglo tiene seis elementos
for (int i = 0; i<6; i++){
numeros[i]=(int)Math.floor((Math.random()*(100))); //crea numeros aleatorios
  #6 (permalink)  
Antiguo 21/04/2012, 14:29
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Pasar valor de un random a un jtextField?

Hola:

numeros es un array y no puedes meter un array en un JTextField. Creo que samito111 te ha entendido mal y te está diciendo como meter seis números aleatorios entre 1 y 100 en seis JtextFields. ¿Es eso lo que quieres?

Si vas al código que tenías antes

Código java:
Ver original
  1. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
  2.    jTextField1.setText(Integer.toString(aleatorio));
  3. }
  4.  
  5. public static void main(String args[]) {
  6. int aleatorio = (int) Math.round(Math.random()*6);

no tiene buena pinta. Tal cual lo pones, int aleatorio es una variable local de main() y no se verá fuera del main, por lo que no se verá en el jButton1ActionPerformed(). Ese aleatorio que tienes dentro del jButton1ActionPerformed() posiblemente lo estás declarando en otro sitio y no es la misma variable aleatorio que tienes en el main(), sino otra distinta aunque se llame igual. posiblemente tienes algo como esto

Código java:
Ver original
  1. public class UnaClase ..... {
  2.    int aleatorio;
  3.  
  4.    public static void main(String args[]) {
  5.         int aleatorio = (int) Math.round(Math.random()*6);
  6.         ....
  7.    }
  8. }

Dentro del main, elimina "int" para que en vez de declarar una variable nueva use la que tienes ya declarada

Código java:
Ver original
  1. public class UnaClase ..... {
  2.    int aleatorio;
  3.  
  4.    public static void main(String args[]) {
  5.         aleatorio = (int) Math.round(Math.random()*6);
  6.         ....
  7.    }
  8. }

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #7 (permalink)  
Antiguo 21/04/2012, 14:49
 
Fecha de Ingreso: abril-2012
Mensajes: 9
Antigüedad: 12 años
Puntos: 0
Respuesta: Pasar valor de un random a un jtextField?

Muchas gracias por la respuesta, he entendido lo que me has dicho y lo he hecho, pero el programa es que en:


aleatorio = [int]Math.round(Math.random()*6);


Me da error y dice que es un error, no hace refencia a la static context



Un saludo!

Código Javascript:
Ver original
  1. int aleatorio;
  2.  
  3.  
  4.  private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
  5.  
  6.     jTextField1.setText(Integer.toString(aleatorio));
  7.  
  8.  
  9. public static void main(String args[]) {
  10.        
  11.               aleatorio = [int]Math.round(Math.random()*6);


No lo he contado, pero estoy haciendo basicamente esto para empezar por algo, ya que tengo que hacer un juego, que tenga 6 casillas y que al pulsar un boton, de aleatoriamente un valor en cada una(un dado).

Un saludo! ;)
  #8 (permalink)  
Antiguo 21/04/2012, 15:34
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Pasar valor de un random a un jtextField?

El asunto es que el método main() es static y el int aleatorio no. O bien haces que el código de aleatorio=(int).... esté en un método no static, o bien declaras static la variable aleatorio.

No es lo más correcto, pero lo más fácil es hacer static la variable

Código java:
Ver original
  1. static int aleatorio;
  2. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
  3.    ...

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #9 (permalink)  
Antiguo 21/04/2012, 16:02
 
Fecha de Ingreso: abril-2012
Mensajes: 9
Antigüedad: 12 años
Puntos: 0
Respuesta: Pasar valor de un random a un jtextField?

Ahora ya si que lo tengo! ;) Muchísimas gracias por la ayuda!! :D ya se algo mas de java gracias ati!


Por cierto, sabrias por aqui algun post que hablen sobre random? ya que miro y no veo asi ninguno especifico, ya que ahora lo que quiero es hacer que ese mismo random me valga para que genere 5 numeros a la vez sin tener que crear 5 random :D


;)
  #10 (permalink)  
Antiguo 21/04/2012, 23:49
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Pasar valor de un random a un jtextField?

Hola:

No estás creando ningún random. Sólo tienes que hacer la llamada a Math.random() cinco veces. Aquí sí te viene bien lo que te comentaba samito111, en su ejemplo se generan 6 random.

Código java:
Ver original
  1. numeros=new int [5];    //el areglo tiene seis elementos
  2. for (int i = 0; i<5; i++){ 
  3.    numeros[i]=(int)Math.floor((Math.random()*(6))); //genera 5 números aleatorios
  4. }

Al acabar este bucle, tendrás los 5 números en numeros[0], numeros[1].... numeros[4]

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #11 (permalink)  
Antiguo 22/04/2012, 04:48
 
Fecha de Ingreso: abril-2012
Mensajes: 9
Antigüedad: 12 años
Puntos: 0
Respuesta: Pasar valor de un random a un jtextField?

Ahora si que lo tengo funcionando perfectamente! ;) muchisimas gracias a los 2 por vuestro tiempo! :D
  #12 (permalink)  
Antiguo 22/04/2012, 04:51
 
Fecha de Ingreso: abril-2012
Mensajes: 9
Antigüedad: 12 años
Puntos: 0
Respuesta: Pasar valor de un random a un jtextField?

Dejo el codigo aqui por si alguien tiene el mismo problema, la solucion es esta:



Código Javascript:
Ver original
  1. public class prueba1 extends javax.swing.JFrame {
  2.  
  3.     int[] numeros;    
  4.  
  5.  
  6.  
  7.  
  8. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
  9.        
  10.         numeros=new int [5];    //el areglo tiene seis elementos
  11.             for (int i = 0; i<5; i++){  
  12.                      numeros[i]=(int)Math.floor((Math.random()*(6))); //genera 5  números aleatorios
  13.             }
  14.        
  15.        
  16.  
  17.         jTextField1.setText(Integer.toString(numeros[0]));
  18.         jTextField2.setText(Integer.toString(numeros[1]));
  19.         jTextField3.setText(Integer.toString(numeros[2]));
  20.         jTextField4.setText(Integer.toString(numeros[3]));
  21.         jTextField5.setText(Integer.toString(numeros[4]));
  22.        
  23.        
  24.        
  25.        
  26.     }

Etiquetas: programa, random
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 07:57.