maxresdefault 12 2

Área de Texto con scroll en Kotlin (JTextArea)(Curso de Kotlin desde cero [83])

En este tutorial vamos a crear un Área de Texto con scroll en Kotlin (JTextArea) y jugaremos con sus propiedades como el texto, las columnas y filas. También aprenderemos a colocar un scroll (JScrollPane).

  • Crear JTextArea sin parámetros en el constructor.
  • Insertamos texto en el JTextArea.
  • Veremos la diferencia entre isEnabled y isEditable
  • Crearemos un JScrollPane donde insertaremos nuestro JTextArea.

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

Área de Texto con scroll en Kotlin

Codigo: https://github.com/programadornovato/CursoKotlin/commit/c0acdf7f01314c38788a42ba9e90470c0e7954eb

//.idea/artifacts/CursoKotlin_jar.xml 
<component name="ArtifactManager">
  <artifact type="jar" name="CursoKotlin:jar">
    <output-path>$PROJECT_DIR$/out/artifacts/CursoKotlin_jar</output-path>
    <root id="archive" name="CursoKotlin.jar">
      <element id="module-output" name="CursoKotlin" />
      <element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-reflect.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-test.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk7.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk8.jar" path-in-jar="/" />
    </root>
  </artifact>
</component> 



//src/Ventana.kt
import java.awt.*
import java.awt.event.KeyEvent
import javax.swing.*

class Ventana(titulo:String?):JFrame(titulo){
    var panel=ArrayList<JPanel>()
    var etiqueta=ArrayList<JLabel>()
    var num=4
    var botonSwing:JButton?=null
    var botonAWT:Button?=null
    var contenedor=JPanel()
    var radioBoton=ArrayList<JRadioButton>()
    init {
        //num=JOptionPane.showInputDialog("Humano ingresa la cantidad de paneles").toInt()
        var d=Dimension(num*150,500)
        this.size=d
        defaultCloseOperation=WindowConstants.EXIT_ON_CLOSE
        this.contentPane.add(contenedor)
        //contenedor.layout=null
        //this.setLocation(500,500)
        //agregarPanel()
        //agregarEtiquetas()
        //agregaBoton()
        //agregarRadio()
        //agregarCampoTexto()
        agregarAreaTexto()
    }
    fun agregarAreaTexto(){
        //contenedor.layout=null
        var areaTexto=JTextArea()
        areaTexto.text="Humano aqui va el texto\nHumano aqui va mas texto\nHumano aqui va el texto\n"
        areaTexto.append("Humano aqui va mas texto\n")
        areaTexto.append("Humano aqui va mas texto\n")
        areaTexto.append("Humano aqui va mas texto\n")
        areaTexto.append("Humano aqui va mas texto\n")
        areaTexto.append("Humano aqui va mas texto\n")
        areaTexto.append("Humano aqui va mas texto\n")
        areaTexto.columns=25
        areaTexto.rows=7
        //areaTexto.setBounds(20,20,50,50)
        var scroll=JScrollPane(areaTexto)
        //scroll.setBounds(20,20,50,50)
        areaTexto.isEnabled=true
        areaTexto.isEditable=false

        contenedor.add(scroll)
    }
    fun agregarCampoTexto(){
        var campoTexto1=JTextField()
        campoTexto1.text="HHHHHHHHHHHHHHHHHHHH"
        campoTexto1.font=Font(Font.MONOSPACED,Font.BOLD,20)
        //campoTexto1.setBounds(100,100,200,20)
        campoTexto1.columns=25
        contenedor.add(campoTexto1)

        var campoTexto2=JTextField()
        campoTexto2.text="HHHHHHHHHHHHHHHHHHHH"
        campoTexto2.font=Font(Font.MONOSPACED,Font.BOLD,30)
        //campoTexto2.setBounds(100,100,200,20)
        campoTexto2.columns=25
        campoTexto2.background=Color.BLUE
        campoTexto2.foreground=Color.YELLOW
        contenedor.add(campoTexto2)

    }
    fun agregarRadio(){
        var grupo=ButtonGroup()
        var textos= arrayOf(
                "Humano dame click",
                "No,no,no humano dame click a mi",
                "Humano dame click y unete a lado hocuro de fuerza"
        )
        for (i in textos.indices){
            radioBoton.add(JRadioButton())
            radioBoton[i].text=textos[i]
            radioBoton[i].setBounds(10,100 + i *50,550,50)
            radioBoton[i].font=Font(Font.MONOSPACED,Font.BOLD,16)
            grupo.add(radioBoton[i])
            contenedor.add(radioBoton[i])
            if(i==2){
                radioBoton[i].isSelected=true
            }
        }
        /*
        var rd=JRadioButton("Humano dame click")
        rd.setBounds(100,100,200,20)
        rd.isEnabled=true
        contenedor.add(rd)
        */
    }
    fun agregaBoton(){
        var logo=ImageIcon("src/images/kotlin.png")
        var logoMin=ImageIcon(logo.image.getScaledInstance(30,30, Image.SCALE_DEFAULT))

        var contenedor=JPanel()
        this.contentPane.add(contenedor)
        contenedor.layout=null
        botonSwing= JButton("Dame like!!!!",logoMin)
        contenedor.add(botonSwing)
        botonSwing!!.text="Que me des liiikeee!!!!"
        botonSwing!!.setBounds(100,100,300,40)
        botonSwing!!.isEnabled=true
        //botonSwing!!.mnemonic='F'.toInt()
        botonSwing!!.mnemonic=KeyEvent.VK_F
        botonSwing!!.icon=ImageIcon(ImageIcon("src/images/like.png").image.getScaledInstance(20,20,Image.SCALE_FAST))
        botonSwing!!.font= Font(Font.MONOSPACED,Font.ITALIC,12)
        botonSwing!!.foreground=Color.BLACK
        botonSwing!!.background=Color.WHITE

        botonAWT= Button("Soy AWT feo pero dame like!!!")
        contenedor.add(botonAWT)
        botonAWT!!.setBounds(100,200,180,40)
        botonAWT!!.label="Que me de like!!!!"
        botonAWT!!.isEnabled=true

    }
    fun agregarPanel(){

        var contenedor=JPanel()
        contenedor.background= Color.red
        this.contentPane.add(contenedor)
        for (i in 0 until num){
            panel.add(JPanel())
            contenedor.add(panel[i])
            panel[i].background= Color(i*50,i*50,i*50)
        }
        contenedor.layout=BoxLayout(contenedor,BoxLayout.X_AXIS)
    }
    fun agregarEtiquetas(){
        var logo=ImageIcon("src/images/kotlin.png")
        var logoMin=ImageIcon(logo.image.getScaledInstance(60,60, Image.SCALE_DEFAULT))
        for (i in 0 until num){
            etiqueta.add(JLabel("Hola ${i+1}",logoMin,SwingConstants.LEFT))
            etiqueta[i].foreground=Color.white
            panel[i].add(etiqueta[i])
        }
    }
}

🎦 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