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) }
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.
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:
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:
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) }