Compare commits
1 Commits
eb331f3d22
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 9f4c20c83e |
Generated
+7
@@ -0,0 +1,7 @@
|
|||||||
|
<component name="ProjectDictionaryState">
|
||||||
|
<dictionary name="project">
|
||||||
|
<words>
|
||||||
|
<w>msksbr</w>
|
||||||
|
</words>
|
||||||
|
</dictionary>
|
||||||
|
</component>
|
||||||
Generated
+1
@@ -11,6 +11,7 @@
|
|||||||
<option value="$PROJECT_DIR$" />
|
<option value="$PROJECT_DIR$" />
|
||||||
<option value="$PROJECT_DIR$/lesson1" />
|
<option value="$PROJECT_DIR$/lesson1" />
|
||||||
<option value="$PROJECT_DIR$/lesson2" />
|
<option value="$PROJECT_DIR$/lesson2" />
|
||||||
|
<option value="$PROJECT_DIR$/lesson3" />
|
||||||
</set>
|
</set>
|
||||||
</option>
|
</option>
|
||||||
</GradleProjectSettings>
|
</GradleProjectSettings>
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
plugins {
|
||||||
|
kotlin("jvm")
|
||||||
|
}
|
||||||
|
|
||||||
|
group = "com.msksbr.jfxLearn"
|
||||||
|
version = "unspecified"
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
testImplementation(kotlin("test"))
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.test {
|
||||||
|
useJUnitPlatform()
|
||||||
|
}
|
||||||
|
kotlin {
|
||||||
|
jvmToolchain(17)
|
||||||
|
}
|
||||||
|
|
||||||
|
application.mainClass.set("com.msksbr.jfxLearn.lesson3.MainKt")
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
/*
|
||||||
|
* Lesson: Stage
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.msksbr.jfxLearn.lesson3
|
||||||
|
|
||||||
|
import javafx.application.Application
|
||||||
|
import javafx.scene.Scene
|
||||||
|
import javafx.scene.control.Alert
|
||||||
|
import javafx.scene.control.Button
|
||||||
|
import javafx.scene.control.Label
|
||||||
|
import javafx.scene.image.Image
|
||||||
|
import javafx.scene.input.KeyCode
|
||||||
|
import javafx.scene.input.KeyEvent
|
||||||
|
import javafx.scene.layout.AnchorPane
|
||||||
|
import javafx.scene.layout.BorderPane
|
||||||
|
import javafx.stage.Modality
|
||||||
|
import javafx.stage.Stage
|
||||||
|
import javafx.stage.StageStyle
|
||||||
|
|
||||||
|
class MainApplication : Application() {
|
||||||
|
override fun start(stage: Stage?) {
|
||||||
|
val label = Label("Hello Kotlin\nPress G to view event test dialog")
|
||||||
|
val button0 = Button("APPLICATION MODAL")
|
||||||
|
button0.layoutX = 100.0
|
||||||
|
button0.layoutY = 100.0
|
||||||
|
val button1 = Button("WINDOW MODAL")
|
||||||
|
button1.layoutX = 100.0
|
||||||
|
button1.layoutY = 130.0
|
||||||
|
val button2 = Button("NONE MODAL")
|
||||||
|
button2.layoutX = 100.0
|
||||||
|
button2.layoutY = 160.0
|
||||||
|
val anchorPane = AnchorPane(label, button0, button1, button2)
|
||||||
|
val scene = Scene(anchorPane)
|
||||||
|
|
||||||
|
// modality test window
|
||||||
|
val label0 = Label("stage 0, APPLICATION_MODAL")
|
||||||
|
val borderPane0 = BorderPane(label0)
|
||||||
|
val scene0 = Scene(borderPane0, 300.0, 300.0)
|
||||||
|
val stage0 = Stage()
|
||||||
|
stage0.scene = scene0
|
||||||
|
|
||||||
|
val label1 = Label("stage 1, WINDOW_MODAL")
|
||||||
|
val borderPane1 = BorderPane(label1)
|
||||||
|
val scene1 = Scene(borderPane1, 300.0, 300.0)
|
||||||
|
val stage1 = Stage()
|
||||||
|
stage1.scene = scene1
|
||||||
|
|
||||||
|
val label2 = Label("stage 2, NONE_MODAL")
|
||||||
|
val borderPane2 = BorderPane(label2)
|
||||||
|
val scene2 = Scene(borderPane2, 300.0, 300.0)
|
||||||
|
val stage2 = Stage()
|
||||||
|
stage2.scene = scene2
|
||||||
|
|
||||||
|
// 1, title: set window title
|
||||||
|
stage?.title = "lesson3"
|
||||||
|
// 2, icons: set window icon
|
||||||
|
stage?.icons?.add(Image("mskbot.png"))
|
||||||
|
// 3, isResizable: set window size adjustable
|
||||||
|
stage?.isResizable = false
|
||||||
|
// 4. x, y, width and height
|
||||||
|
// x,y is omitted
|
||||||
|
stage?.width = 300.0
|
||||||
|
stage?.height = 300.0
|
||||||
|
// 5. style:
|
||||||
|
// DECORATED: default on current operating system
|
||||||
|
// UNDECORATED: non-border window
|
||||||
|
// TRANSPARENT: transparent background and non-border, complete transparent, but ONLY THIS STAGE IS TRANSPARENT
|
||||||
|
// UTILITY: only close button and title, just like a dialog
|
||||||
|
stage?.initStyle(StageStyle.DECORATED)
|
||||||
|
// 6. modality
|
||||||
|
// when application modal selected, other stage of this application can't use
|
||||||
|
stage0.initModality(Modality.APPLICATION_MODAL)
|
||||||
|
stage1.initModality(Modality.WINDOW_MODAL)
|
||||||
|
// when window modal selected, it's own stage can't use
|
||||||
|
stage1.initOwner(stage)
|
||||||
|
// default and normal modal option
|
||||||
|
stage2.initModality(Modality.NONE)
|
||||||
|
button0.setOnAction { stage0.show() }
|
||||||
|
button1.setOnAction { stage1.show() }
|
||||||
|
button2.setOnAction { stage2.show() }
|
||||||
|
// 7. event
|
||||||
|
stage?.addEventHandler(KeyEvent.KEY_PRESSED) { event ->
|
||||||
|
if (event.code == KeyCode.G) {
|
||||||
|
Alert(Alert.AlertType.CONFIRMATION).apply {
|
||||||
|
title = "event test"
|
||||||
|
headerText = null
|
||||||
|
contentText = "event test"
|
||||||
|
}.show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage?.scene = scene
|
||||||
|
stage?.show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun main(args: Array<String>) {
|
||||||
|
Application.launch(MainApplication::class.java, *args)
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.5 MiB |
+2
-1
@@ -1,3 +1,4 @@
|
|||||||
rootProject.name = "jfx-learn"
|
rootProject.name = "jfx-learn"
|
||||||
include("lesson1")
|
include("lesson1")
|
||||||
include("lesson2")
|
include("lesson2")
|
||||||
|
include("lesson3")
|
||||||
Reference in New Issue
Block a user