Tartalomjegyzék

< Kotlin

Kotlin Swing

Helló világ

ablak.kt
import javax.swing.*
 
fun main() {
    val ablak = JFrame("Helló Világ")
    ablak.setSize(300, 200)
    ablak.setVisible(true)
}

Ablak bezárása

ablak.kt
import javax.swing.*
 
fun main() {
    val ablak = JFrame("Helló Világ")
    ablak.setSize(300, 200)
    ablak.defaultCloseOperation=JFrame.EXIT_ON_CLOSE
    ablak.setVisible(true)
}

Gomb

ablak.kt
import javax.swing.*
import java.awt.*
 
fun main() {
    val ablak = JFrame("Helló Világ")
 
    val gomb = JButton("Kattints ide")
    gomb.bounds = Rectangle(20, 50, 130, 30)
    gomb.addActionListener {
        gomb.text = "Működik"
    }
 
    ablak.add(gomb)
    ablak.layout=null
    ablak.setSize(300, 200)
    ablak.defaultCloseOperation=JFrame.EXIT_ON_CLOSE
    ablak.setVisible(true)    
}

Osztály használata

ablak.kt
import javax.swing.*;
import java.awt.EventQueue;
 
class Ablak : JFrame() {
    init {
        defaultCloseOperation = JFrame.EXIT_ON_CLOSE
        setSize(300, 200)
    }
}
 
fun main() {
    val ablak = Ablak()
    ablak.setVisible(true) 
 
}

Szálak

Ha több szállal dolgozunk, akkor problémák adódhatnak, amikor több szál nyúl ugyanahhoz a komponenshez. Az invokeLate() metódus, várakozási sorba rakja az ezeket a szálakat.

ablak.kt
import javax.swing.*;
 
class Ablak : JFrame() {
    init {
        defaultCloseOperation = JFrame.EXIT_ON_CLOSE
        setSize(300, 200)
    }
}
 
fun main() {
    val ablak = Ablak()
    SwingUtilities.invokeLater { 
        ablak.setVisible(true) 
    }
}

Másik megoldás:

ablak.kt
import javax.swing.*;
import java.awt.EventQueue;
 
class Ablak : JFrame() {
    init {
        defaultCloseOperation = JFrame.EXIT_ON_CLOSE
        setSize(300, 200)
    }
}
 
fun main() {
    val ablak = Ablak()
    EventQueue.invokeLater { ablak.setVisible(true) }
}

Harmadik példa:

ablak.kt
import javax.swing.*;
import java.awt.EventQueue;
 
class Ablak : JFrame() {
    init {
        defaultCloseOperation = JFrame.EXIT_ON_CLOSE
        setSize(300, 200)
    }
}
 
private fun showGui() {
    val ablak = Ablak()
    ablak.setVisible(true)
}
 
fun main() {
    EventQueue.invokeLater(::showGui)
}