# Tutorial Kotlin GUI

**URL:** <https://discuss.kotlinlang.org/t/tutorial-kotlin-gui/3047>\
**Category:** Uncategorized\
**Created:** [June 1, 2017, 12:03pm UTC](https://discuss.kotlinlang.org/t/tutorial-kotlin-gui/3047 "2017-06-01T12:03:41Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![LegendEnzo](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/legendenzo/32/2635_2.png) [@LegendEnzo](https://discuss.kotlinlang.org/u/LegendEnzo)\
**Post date:** [June 1, 2017, 12:03pm UTC](https://discuss.kotlinlang.org/t/tutorial-kotlin-gui/3047/1 "2017-06-01T12:03:41Z")

</div>

Anyone have a tutorial or step by step how I can get by kotlin a drag and drop GUI System

---

<div class="post-metadata">

**Author:** ![jstuyts](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/jstuyts/32/2141_2.png) [@jstuyts](https://discuss.kotlinlang.org/u/jstuyts)\
**Post date:** [June 1, 2017, 12:30pm UTC](https://discuss.kotlinlang.org/t/tutorial-kotlin-gui/3047/2 "2017-06-01T12:30:59Z")

</div>

Kotlin does not provide a GUI framework. If you target the JVM, you can use JavaFX, Swing (obsolete), AWT (even more obsolete) or any other third-party framework.

Kotlin is a programming language. It has a small standard library so the same code can be used for the targets it supports (JVM, JavaScript and native). Most functionality that you need has to come from existing Java/JavaScript libraries, Kotlin wrappers around these libraries and/or libraries written from scratch in Kotlin. If you find a library/framework that you want to use, simply follow the tutorials for it, translating the example code to Kotlin where needed.

---

<div class="post-metadata">

**Author:** ![innov8ian](https://avatars.discourse-cdn.com/v4/letter/i/ee7513/32.png) [@innov8ian](https://discuss.kotlinlang.org/u/innov8ian)\
**Post date:** [June 2, 2017, 6:18am UTC](https://discuss.kotlinlang.org/t/tutorial-kotlin-gui/3047/3 "2017-06-02T06:18:22Z")

</div>

You could try [tornadoFX](https://github.com/edvin/tornadofx). there is some training material, and even an intelij plugin. TornadoFX is a wrapper for JavaFX with the goal of taking advantage of kotlin. (i have not tried this yet, but it seems to be the best answer i found while considering the same question)

---

<div class="post-metadata">

**Author:** ![ikej](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/ikej/32/1818_2.png) [@ikej](https://discuss.kotlinlang.org/u/ikej)\
**Post date:** [June 2, 2017, 7:02am UTC](https://discuss.kotlinlang.org/t/tutorial-kotlin-gui/3047/4 "2017-06-02T07:02:06Z")

</div>

AWT and Swing are not two different GUI toolkits. Swing is implemented on top of AWT and except for the file chooser, the couple of native widgets that AWT implemented in Java 1.0 are not relevant and do not constitute a separate toolkit.

AWT/Swing is not obsolete, it’s one of the two GUI toolkits in the JRE. It’s actively maintained (see for example the new multi-resolution icons in Java 9) and 2 of the 3 major IDEs on the JVM are built with it, the other one uses SWT.

---

<div class="post-metadata">

**Author:** ![darksnake](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/darksnake/32/2479_2.png) [@darksnake](https://discuss.kotlinlang.org/u/darksnake)\
**Post date:** [June 4, 2017, 6:38am UTC](https://discuss.kotlinlang.org/t/tutorial-kotlin-gui/3047/5 "2017-06-04T06:38:29Z")

</div>

tornadoFX is a great library. In fact, I tried it and moved all of my GUI code to kotlin from java just to be able to use it. It is still not fully documented, but they are making efforts to fix it [here](https://edvin.gitbooks.io/tornadofx-guide/content/).

---

<div class="post-metadata">

**Author:** ![joffrey.bion](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/joffrey.bion/32/5084_2.png) [@joffrey.bion](https://discuss.kotlinlang.org/u/joffrey.bion)\
**Post date:** [June 26, 2018, 8:43am UTC](https://discuss.kotlinlang.org/t/tutorial-kotlin-gui/3047/6 "2018-06-26T08:43:54Z")

</div>

AWT and Swing might not be obsolete from the “current usage” point of view, but someone starting a new project should avoid them and prefer more recent alternatives like JavaFX (which already starts being old now).

---

<div class="post-metadata">

**Author:** ![Varia](https://avatars.discourse-cdn.com/v4/letter/v/b9e5f3/32.png) [@Varia](https://discuss.kotlinlang.org/u/Varia)\
**Post date:** [June 26, 2018, 4:32pm UTC](https://discuss.kotlinlang.org/t/tutorial-kotlin-gui/3047/7 "2018-06-26T16:32:56Z")

</div>

Would ElectronJS be a viable framework when compiling to JS?

---

<div class="post-metadata">

**Author:** ![ikej](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/ikej/32/1818_2.png) [@ikej](https://discuss.kotlinlang.org/u/ikej)\
**Post date:** [June 27, 2018, 12:47pm UTC](https://discuss.kotlinlang.org/t/tutorial-kotlin-gui/3047/8 "2018-06-27T12:47:33Z")

</div>

I’d say there are no really good options right now. At least the “current usage” point of view guarantees that the major stakeholders have an interest in keeping things going. I’m using the JetBrains runtime (an OpenJDK fork), for example, where JetBrains is kind enough to fix all sorts of AWT/Swing bugs that Oracle is not interested in.

---

<div class="post-metadata">

**Author:** ![dhakehurst](https://avatars.discourse-cdn.com/v4/letter/d/ccd318/32.png) [@dhakehurst](https://discuss.kotlinlang.org/u/dhakehurst)\
**Post date:** [August 7, 2019, 1:38pm UTC](https://discuss.kotlinlang.org/t/tutorial-kotlin-gui/3047/9 "2019-08-07T13:38:22Z")

</div>

This looked really promising,  
but seems to lack developers and is not up with the latest version of kotlin

> **[Korlibs: Korlibs](https://korlibs.soywiz.com/)**
>
> Modern Kotlin Common Libraries for Full Stack development
