Conversor de unidades de longitud con interfaz gráfica 1.0 [ESP-ENG] | Java

in Develop Spanishlast year (edited)

¿Qué tal todo? He aquí estoy de vuelta con más de mis prácticas de Java, para esta ocasión, un clásico conversor de unidades es lo que traigo. Esto lo he hecho antes en C++, pero esta vez tiene una interfaz gráfica y validaciones más estrictas que lo hacen mucho más manejable para el usuario común.

Esta es mi primera versión, tal y como lo comento en el título, y sí, eso asoma que quiero mejorarlo en el futuro, con arras a añadir más unidades de longitud.

What's up? Here I am back with more of my Java practices, for this occasion, a classic unit converter is what I bring. I've done this before in C++, but this time it has a graphical interface and tighter validations that make it much more manageable for the common user.

This is my first version, as I say in the title, and yes, it looks like I want to improve it in the future, with the addition of more units of length.


Portada post programacion, tech.gif

Education separador png.png

Para empezar la clase más importante es la clase "Control", que trae todas las funciones claves para el funcionamiento. Tanto la de validación como la de conversión. Para la de validación tuve que repasar el uso de un par de elementos de la clase javax.swing, pues no recordaba exactamente como extraer y modificar ciertos datos. Tanto en el JComboBox como en el elemento de campo de texto.

Así pues, la primera función llamada "numberValidator" se encarga precisamente de validar el texto que se recibe en el campo de texto modificable (el segundo no puede ser modificado, esta destinado solo a mostrar). De tal manera que a través de una variable bautizada como "caracter", de tipo, precisamente, caracter se recibe el caracter (valga la redundancia), que el usuario teclee. Esto para verificar que sea un número o un ".", pues es necesario que se incluyan para los números decimales.

No obstante, hay una excepción clara y es cuando se añade el . al principio sin ningún número que le anteceda, algo como ".59", esto podría interpretarse como "0.59", pero para evitar errores se incluyó la excepción que limpia el campo en caso de que quiera añadirse una cifra de esa manera, evitando así errores.

Curiosamente colocar el punto al final sin decimales no provoca errores, es decir, algo como "59.", será interpretado como "59.00". Para evitar el ingreso de los caracteres no permitidos usé el método "consume", a partir del evento que está en los parámetros de la función.

Dentro de los parámetros está el mismo campo de texto, de modo que se modifique su contenido según sea pertinente. Ya para la función de conversión llega una situación curiosa y es que l_unitConverter tiene una serie de condiciones bastante amplia, esto porque la idea es que fuese posible convertir entre las unidades: Milímetros, centímetros, decímetros, metros, decámetros, hectómetros y kilómetros.

Para ello se usan las fórmulas pertinentes fácilmente ubicables en la red, enseñadas en física de secundaria, en la primaria y refrescadas al llegar a la universidad. Sin embargo hay un par de validaciones que no siguen esta regla y son el caso de ser el mismo tipo de unidad, y de ser el número 0. En ambos caso se muestre el mismo valor en el campo 2, como es lógico, 5 metros son 5 metros y 0 metros son 0 kilómetros, decámetros, hectómetros y así sucesivamente.

Para las conversiones me apoyé en dos variables de tipo double. "numberConverted" y "numberToConvert", la primera recibe el número convertido y la primera recibe el número a convertir.

To begin with, the most important class is the "Control" class, which brings all the key functions for the operation. Both validation and conversion. For the validation I had to review the use of a couple of elements of the javax.swing class, because I did not remember exactly how to extract and modify certain data. Both in the JComboBox and in the text field element.

So, the first function called "numberValidator" is precisely in charge of validating the text that is received in the modifiable text field (the second one cannot be modified, it is intended only to display). In such a way that through a variable named "character", of type, precisely, character, it receives the character (redundancy), that the user types. This to verify that it is a number or a ".", since it is necessary that they are included for decimal numbers.

However, there is a clear exception and it is when the . is added at the beginning without any number before it, something like ".59", this could be interpreted as "0.59", but to avoid errors was included the exception that clears the field in case you want to add a number in that way, thus avoiding errors.

Interestingly, placing the period at the end without decimals does not cause errors, i.e., something like "59.", will be interpreted as "59.00". To avoid the input of the not allowed characters I used the method "consume", from the event that is in the parameters of the function.

Within the parameters is the text field itself, so that its content can be modified as appropriate. Already for the conversion function comes a curious situation and is that l_unitConverter has a fairly broad set of conditions, this because the idea is that it was possible to convert between units: millimeters, centimeters, decimeters, meters, decameters, hectometers and kilometers.

To do this we use the relevant formulas easily found on the web, taught in high school physics, in elementary school and refreshed at the university. However, there are a couple of validations that do not follow this rule and they are the case of being the same type of unit, and being the number 0. In both cases the same value is shown in field 2, as it is logical, 5 meters are 5 meters and 0 meters are 0 kilometers, decameters, hectometers and so on.

For the conversions I relied on two variables of type double. "numberConverted" and "numberToConvert", the first one receives the converted number and the first one receives the number to convert.

Education separador png.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

Education separador png.png

Ya para la clase vista es en gran medida código generado por Apache NetBeans 19. de la plantilla de clase JFrame, pues a partir del apartado de diseño es mucho más fácil crear las interfaces. Donde varié fue en el field1KeyType, que es la clase en la que se habilitan las validaciones y en el método de acción del botón está el conversor. La clase final es un simple "main" en el que se habilita la interfaz y los controladores.

Already for the view class is largely code generated by Apache NetBeans 19. from the JFrame class template, because from the design section it is much easier to create the interfaces. Where I varied was in the field1KeyType, which is the class where the validations are enabled and in the button action method is the converter. The final class is a simple "main" in which the interface and controllers are enabled.

Education separador png.png

image.png

image.png

image.png

image.png

image.png

Education separador png.png

record_000015.gif

Education separador png.png

Y pues eso ha sido todo, mi plan para la versión 2.0 es añadir unidades extranjeras de longitud, mejorar el diseño para que no sea tan simple, colocarle un ícono y quizás un logo para identificarlo con mi cuenta. Seguimos adelante en el proceso de aprendizaje, pues invertir en conocimiento es invertir en tu futuro.

El video que consulté para repasar las validaciones lo dejaré por acá abajo. Respecto al curso de Java, llevo actualmente un 18%.

So that's it, my plan for version 2.0 is to add foreign units of length, improve the design so it's not so simple, put an icon and maybe a logo to identify it with my account. We go on with the learning process, because investing in knowledge is investing in your future.

The video I consulted to review the validations is below. Regarding the Java course, I am currently 18% complete.

image.png

Education separador png.png


Redes actualizada.gif


Puedes seguirme por acá si lo deseas:
You can follow me here if you want:

Cuenta secundaria
(Dibujos, edición y juegos) | Secondary account (Drawings, editing and games)

Sort:  

no he visto mucho contenido de programación en español, y bueno me encanta ver tu blog, esperemos aprendas mucho y puedas compartirlo =^^=

Gracias por tu comentario, en la comunidad de DevelopSpanish hay bastante contenido en español. No está tan activa como en sus principios pero hay un buen repertorio de post muy interesantes.

Estoy volviendo intentar activarla mas seguido, asi que si conocen mas programadores, les pido que los inviten a la comunidad

Claro, les ayudare, conosco algunos para invitarlos

Por supuesto!

Únete a la comunidad Web3 en español y su testigo activo para impulsar la colaboración descentralizada. Conectamos, fortalecemos y amplificamos voces. Juntos construimos el futuro digital.


Sigue, contacta y se parte del testigo en: // Follow, contact and be part of the witness in:

Vota por el testigo @Hispapro // Vote for the @Hispapro witness

Keychan - - Ecency - Peakd
Hive.blog / https://wallet.hive.blog/~witnesses

Thanks for your contribution to the STEMsocial community. Feel free to join us on discord to get to know the rest of us!

Please consider delegating to the @stemsocial account (85% of the curation rewards are returned).


 
You may also include @stemsocial as a beneficiary of the rewards of this post to get a stronger support. 

Congratulations @gabrielr29! You have completed the following achievement on the Hive blockchain And have been rewarded with New badge(s)

<table><tr><td><img src="https://images.hive.blog/60x70/http://hivebuzz.me/@gabrielr29/upvoted.png?202310041845" /><td>You received more than 25000 upvotes.<br />Your next target is to reach 30000 upvotes. <p dir="auto"><sub><em>You can view your badges on <a href="https://hivebuzz.me/@gabrielr29" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">your board and compare yourself to others in the <a href="https://hivebuzz.me/ranking" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Ranking<br /> <sub><em>If you no longer want to receive notifications, reply to this comment with the word <code>STOP <p dir="auto"><strong>Check out our last posts: <table><tr><td><a href="/hive-122221/@hivebuzz/pum-202309-delegations"><img src="https://images.hive.blog/64x128/https://i.imgur.com/fg8QnBc.png" /><td><a href="/hive-122221/@hivebuzz/pum-202309-delegations">Our Hive Power Delegations to the September PUM Winners<tr><td><a href="/hive-122221/@hivebuzz/pud-202310-feedback"><img src="https://images.hive.blog/64x128/https://i.imgur.com/zHjYI1k.jpg" /><td><a href="/hive-122221/@hivebuzz/pud-202310-feedback">Feedback from the October Hive Power Up Day<tr><td><a href="/hive-122221/@hivebuzz/pum-202309-result"><img src="https://images.hive.blog/64x128/https://i.imgur.com/mzwqdSL.png" /><td><a href="/hive-122221/@hivebuzz/pum-202309-result">Hive Power Up Month Challenge - September 2023 Winners List

¡Felicitaciones!



Estás participando para optar a la mención especial de nuestra COMUNIDAD (Recompensa de 1 Hive), también has recibido 1 ENTROKEN.

1. Invierte en el PROYECTO ENTROPÍA y recibe ganancias semanalmente. Entra aquí para más información.

2. Contáctanos en Discord: https://discord.gg/hkCjFeb

3. Suscríbete a nuestra COMUNIDADEntra aquí para más información sobre nuestro trail., apoya al trail de @Entropia y así podrás ganar recompensas de curación de forma automática.

4. Creación de cuentas nuevas de Hive aquí.

5. Visita nuestro canal de Youtube.

Atentamente

El equipo de curación del PROYECTO ENTROPÍA