< Kotlin

Kotlin Swing

Szerző: Sallai András

Copyright © Sallai András, 2020

CC Attribution-Share Alike 4.0 International

Web: http://szit.hu

Helló világ

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

Ablak bezárása

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

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

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 egy-egy szál hozzányúl ugyanahhoz a komponenshez. Az invokeLate() metódus, várakozási sorba rakja az egyes 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) }