maxresdefault 6 3

args en Kotlin ¿que es? y como crear ejecutable en intellij (Curso de Kotlin desde cero [90])

En este tutorial vamos a aprender a crear un ejecutable de nuestro código y además le podremos pasar argumentos osea args en Kotlin a nuestra clase main atrevas de la terminal en windows.

  • Declararemos un JTextArea de forma global.
  • Crearemos un método ponerTextos que reciba un arreglo de Strings
  • Desde nuestra clase principal llamaremos nuestro método ponerTextos que escribira en el JTextArea los argumentos que recibamos desde el main.
  • Crearemos un jar así:
    • Ir a Menu | File | Project Structure y seleccionamos Artifacts.
    • Clic en JAR y seleccionamos From modules with dependencies..
    • A la derecha del campo Clase principal, haga clic en y seleccione la clase principal en el cuadro de diálogo que se abre.
    • Aplicar los cambios y cerrar el diálogo.

🔗 Librerias de Java swing: https://es.wikipedia.org/wiki/Swing_(biblioteca_gr%C3%A1fica)

Comando: java -jar CursoKotlin.jar ejemplo1 ejemplo2 ejemplo3

Args en Kotlin

Codigo: https://github.com/programadornovato/CursoKotlin/commit/3b3075bfd03148e0faf33b3a1d2633d20391004d

///src/main.kt
import java.lang.management.ManagementFactory
import javax.swing.JOptionPane

fun main(args:Array<String>){
    var v=Ventana("Este es mi titulo ${getPid()}")
    v.isVisible=true
    v.meteArgumentos(args)
    /*
    for(i in 1 .. 10){
        Thread.sleep(200)
        v.setLocation(i*30,i*30)
    }
    */
    //v.setLocation(500,500)
    //v.setBounds(500,500,500,500)
    v.setLocationRelativeTo(null)
}
fun getPid():String?{
    return ManagementFactory.getRuntimeMXBean().name
}


//src/Ventana.kt
import java.awt.*
import java.awt.event.*
import java.lang.Exception
import java.util.regex.Matcher
import java.util.regex.Pattern
import javax.swing.*

class Ventana(titulo:String?):JFrame(titulo){
    var contenedor=JPanel()
    var muestraArgumentos=JTextArea()
    init {
        var d=Dimension(500,500)
        this.size=d
        defaultCloseOperation=WindowConstants.EXIT_ON_CLOSE
        this.contentPane.add(contenedor)
        contenedor.layout=null
        muestraArgumentos.setBounds(10,10,450,200)
        contenedor.add(muestraArgumentos)
        //evento()
        //eventosRaton()
        //eventoTeclado()
        //validarNumero()
        //validarCorreo()
    }
    fun meteArgumentos(argumentos:Array<String>){
        argumentos.forEach {
            muestraArgumentos.append("$it\n")
        }
    }
    fun validarCorreo(){
        var caja=JTextField()
        caja.setBounds(10,10,400,30)
        contenedor.add(caja)

        var areaTexto=JTextArea()
        areaTexto.setBounds(10,50,400,200)
        contenedor.add(areaTexto)

        var l:KeyListener=object :KeyListener{
            override fun keyPressed(e: KeyEvent?) {
            }
            override fun keyTyped(e: KeyEvent?) {
            }
            override fun keyReleased(e: KeyEvent?) {
                if(e!!.keyChar=='\n'){
                    if(esCorreo(caja.text)==true){
                        areaTexto.append("Si humano, es cun correo\n")
                    }else{
                        areaTexto.append("No humano estupidoo, No es cun correo\n")
                    }
                }
            }
        }
        caja.addKeyListener(l)
    }
    fun esCorreo(texto:String):Boolean{
        var patroncito:Pattern=Pattern.compile("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$")
        var comparador:Matcher=patroncito.matcher(texto)
        return comparador.find()
    }
    fun validarNumero(){
        var caja=JTextField()
        caja.setBounds(10,10,400,30)
        contenedor.add(caja)

        var areaTexto=JTextArea()
        areaTexto.setBounds(10,50,400,200)
        contenedor.add(areaTexto)

        var l:KeyListener=object :KeyListener{
            override fun keyPressed(e: KeyEvent?) {

            }

            override fun keyTyped(e: KeyEvent?) {

            }

            override fun keyReleased(e: KeyEvent?) {
                if(esNumero(caja.text)==true){
                    areaTexto.append("Si humano, si es un numero\n")
                }else{
                    areaTexto.append("No humano estupido, esto no es un numero\n")
                }
            }
        }
        caja.addKeyListener(l)
    }
    fun esNumero(texto:String):Boolean{
        try {
            texto.toInt()
            return true
        }catch (e:Exception){
            return false
        }
    }
    fun eventoTeclado(){
        var caja=JTextField()
        caja.setBounds(10,10,400,30)
        contenedor.add(caja)

        var areaTexto=JTextArea()
        areaTexto.setBounds(10,50,400,200)
        contenedor.add(areaTexto)

        var l:KeyListener=object :KeyListener{
            override fun keyPressed(e: KeyEvent?) {
                areaTexto.append("keyPressed\n")
            }
            override fun keyTyped(e: KeyEvent?) {
                areaTexto.append("keyTyped\n")
            }
            override fun keyReleased(e: KeyEvent?) {
                //areaTexto.append("keyReleased\n")
                if(e!!.keyChar=='*'){
                    areaTexto.append("Soltaste el asterisco\n")
                }
                if(e!!.keyChar=='\n'){
                    areaTexto.append("Soltaste el enter\n")
                }
                if(e!!.keyChar==' '){
                    areaTexto.append("Soltaste el espacio\n")
                }
            }
        }
        caja.addKeyListener(l)
    }
    fun eventosRaton(){
        var boton=JButton("Humano ponte a jugar con tu raton (¡¡¡El de la compu!!!)")
        boton.setBounds(10,10,450,30)
        contenedor.add(boton)

        var caja=JTextField()
        caja.setBounds(10,50,400,30)
        contenedor.add(caja)

        var l:MouseListener=object :MouseListener{
            override fun mouseClicked(e: MouseEvent?) {
                //caja.text="mouseClicked"
            }
            override fun mouseEntered(e: MouseEvent?) {
                caja.text="mouseEntered"
            }
            override fun mouseExited(e: MouseEvent?) {
                caja.text="mouseExited"
            }
            override fun mousePressed(e: MouseEvent?) {
                caja.text="mousePressed"
            }
            override fun mouseReleased(e: MouseEvent?) {
                caja.text="mouseReleased"
            }
        }
        boton.addMouseListener(l)
    }
    fun evento(){
        var boton=JButton("Humano coloca tu miserable nombre en el cuadro de texto y da click aqui")
        boton.setBounds(10,10,450,30)
        contenedor.add(boton)

        var caja=JTextField()
        caja.setBounds(10,50,400,30)
        contenedor.add(caja)

        var etiqueta=JLabel()
        etiqueta.setBounds(10,100,400,30)
        contenedor.add(etiqueta)

        var accion=ActionListener{
            etiqueta.text="Hola ${caja.text}"
        }
        boton.addActionListener(accion)


    }
}

🎦 Lista de reproducción de este curso: https://www.youtube.com/playlist?list=PLCTD_CpMeEKSjzbsW_zmVNz23GyOVsdbS

🎦 [Curso] Java Netbeans Completo☕: https://www.youtube.com/playlist?list=PLCTD_CpMeEKTT-qEHGqZH3fkBgXH4GOTF
🎦 [CURSO] PYTHON PARA PRINCIPIANTES🐍: https://www.youtube.com/playlist?list=PLCTD_CpMeEKRppvi86Dy8CPYZ8-XzN2qu

🔗 Facebook: https://facebook.com/ProgramadorNovatoOficial
🔗 Twitter: https://twitter.com/programadornova
🔗 Linkedin: https://www.linkedin.com/in/programadornovato/
🔗 Instagram: https://www.instagram.com/programadornovato/
🔗 Pagina oficial: https://www.programadornovato.com
🔗 Gracias por apoyar este canal: https://www.patreon.com/programadornovato
🎦 Canal de youtube: https://www.youtube.com/c/programadornovato

<<Anterior tutorial Siguiente tutorial >>

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Eugenio Chaparro.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a digitalocean.com que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad
Salir de la versión móvil