Aprendiendo Java, un par de dudas.

UnLiMiTeD

Buenas gente.

Despues de 34 años, por fin me ha dado por ponerme a aprender programacion. Es algo que siempre quise hacer pero nunca me puse a ello, y ahora que tengo algo de tiempo libre por las mañanas, he decidido dar el paso. He empezado con Java, aunque me han recomendado hacerlo con Javascript, pero bueno, de momento he dado el paso de comenzar con Java.

He seguido varios tutoriales , concretamente de este canal:

Tambien he dado algunas clases via Skype con un tipo. Aunque ahora mismo esta de Vacas asi que llevo ya un par de semanas sin hacerlo.

He hecho varios ejercicios tipicos, calculadora, pasar de negativos a positivos, conversores, etc... todos sencillos. Ahora queria hacer mi primer ejercicio "util", o sea... todos son utiles, pero me refiero a hacer un programita que me sirva realmente. Como aun tengo muchas cosas verdes, antes de ponerme a picar codigo para el programa en si, estoy separandolo en todas sus partes para ver si soy capaz de hacer cada cosa que necesito, y una vez que vea que mas o menos se hacer cada parte por separado, realizar el proyecto entero. Bueno, no os voy a dar el coñazo sobre que se trata, asi que os pongo las dos dudas que tengo ahora mismo aqui:

He hecho un Slider ( en Netbeans ) y quiero que haga lo siguiente:
Primero que tal como se ve en la imagen, comienze desde el centro, no desde uno de los laterales. Pero el problema viene aqui. Yo quiero que el centro sea el punto 0 ( numericamente hablando ) y cuando lo arrastre a la izquierda llegue a 100, y cuando lo arrastre a la derecha llegue a 100 tambien. Sinceramente, no tengo ni pajolera idea de como lograr tal cosa.

Lo siguiente que quiero, es que en los labels de abajo, a medida que muevo el slider, ocurra lo siguiente:
El label de la izquierda muestra el valor real de donde esta el Slider. Si el valor de Slider es 40, pues el Label uno muestra 40. Hasta ahi sin problemas. El Label de la derecha quiero que muestre 100 - el valor del Label de la izquierda. O sea, si el de la Izquierda esta en 40, el de la derecha en 60.

Dentro de lo poquito que se de Java, he logrado que se muestre el Label de la izquierda correctamente de la siguiente forma:

txtPG.setText(Integer.toString(medidor.getValue()));

El problema viene cuando quiero darle el valor al segundo Label ( que es 100 menos el valor del Label de la izquierda ). No se realmente que codigo debo escribir para ello. Lo he intentado de varias formas pero evidentemente lo hago mal por que nunca doy con la tecla xD

Se que debo guardar el valor de txtPG ( que es el Label izquierdo ) para luego poder simplemente crear la variable para el derecho, restando el valor que me da el izquierdo, pero no se como hacerlo. Lo he intentado asi:

PG = txtPG.nextInt();

Pero no me deja, me da un error. Cannot find symbol method nextint.

Se que pedir que me indiqueis exactamente lo que debo poner no ayudara a que aprenda, asi que si quereis darme pistas en vez del resultado, bienvenidas son.

PD: Si alguno por estos lares esta tan rematadamente aburrido que le apetece charlar sobre Java o darme pequeñas clases a cambio de mucho amor, tambien sera bienvenido :P

PD2: VALEEEEEE, lo logre. Estaba saltandome pasos evidentemente. Añadiendo la variable "medidor" para grabar el resultado que da el slider, ya pude hacer sencillamente VG ( que es el Label derecho ) = 100 - medidor.

Y ademas veo que automaticamente si muevo el slider a la derecha, como no usa numeros negativos, hace exactamente lo que yo buscaba.

Ea pues todo solucionado. Gracias a quien se haya tomado el tiempo de leerlo.

int PG;
int VG;
int medidor;


    medidor = slmedidor.getValue();
    
    VG = 100 - medidor;
                   
    txtPG.setText(Integer.toString(slmedidor.getValue()));
    txtGV.setText(Integer.toString(VG));[/b]

Ahora se me ocurre una duda. ¿Como hago que el Slider vaya de 5 en 5 y no de 1 en 1?, Quiero decir, que salte de 50 a 45, 40, etc...

Ranthas

#1 ¿De dónde has sacado el slider? Swing, JavaFX....?

Si es con Swing, mirate los metodos TickSpacing de la clase JSlider.
Si es con JavaFX, echa un vistazo a TickCount y BlockIncrement de la clase Slider

1 respuesta
UnLiMiTeD

#2 Con Netbeans, el que viene en el modo Design. Y por lo que veo es con Swing.

private javax.swing.JSlider SLMedidor;

Echare un vistazo a ver. Thanks!

W0rd

Te sugiero empezar primero con las nociones básicas usando la consola que meterte a diseñar interfaces gráficas, bucles, condiciones, colecciones, tipos variables, operaciones, objectos etc.

1 respuesta
Troyer

Sinceramente para empezar a programar lo peor que puedes hacer es picar código sin tener unos conocimientos de metodologías, buenas prácticas, cómo funciona un programa, que es un compilador, diferencias entre los lenguajes de programación, ect.

Y una vez ya tengas una buena base te pones a picar, porque como empieces a pillar costumbres malas, no sepas lo que realmente estás haciendo por seguir el mítico tutorial de youtube después quitarte los malos habitos te va a costar horrores.

1 respuesta
Ridote

#4 #5 Totalmente de acuerdo con ellos. Para empezar javascript sería lo último que te recomendaría. De hecho yo empezaría con C puro y duro y cuando te vayas a meter con objetos cambiarte a java. Y en cuanto a interfaces gráficas, te recomendaría ni acercarte a ellas en por lo menos 5 o 6 meses. Aprende a programar desde el principio en condiciones:

tipos de datos basicos, condicionales, bucles, funciones, paso por parámetro y referencia, estructuras, punteros, recursividad, tipos abstractos de datos (listas, colas, árboles), POO, patrones de diseño, etc

Y ya entonces le metes caña a las interfaces de java. Hay mil ejercicios guapos para hacer o incluso en un momento dado puedes hacerte tu propio videojuego tipo snake o un juego de cartas sencillo por consola y luego pasarlo a interfaces cuando domines algo más.

¡Mucho ánimo!

1

Usuarios habituales

  • Ridote
  • Troyer
  • W0rd
  • UnLiMiTeD
  • Ranthas