Ver código fonte

translucence

milan jurkulák 2 anos atrás
pai
commit
349e6525d2

+ 20 - 0
src/main/kotlin/eu/mjdev/desktop/windows/TranslucentPane.kt

@@ -0,0 +1,20 @@
+package eu.mjdev.desktop.windows
+
+import java.awt.AlphaComposite
+import java.awt.Graphics
+import java.awt.Graphics2D
+import javax.swing.JPanel
+
+class TranslucentPane : JPanel() {
+    init {
+        isOpaque = false
+    }
+
+    override fun paintComponent(g: Graphics) {
+        super.paintComponent(g)
+        val g2d = g.create() as Graphics2D
+        g2d.composite = AlphaComposite.SrcOver.derive(0.85f)
+        g2d.color = background
+        g2d.fillRect(0, 0, width, height)
+    }
+}

+ 42 - 0
src/main/kotlin/eu/mjdev/desktop/windows/TranslucentWindow.kt

@@ -0,0 +1,42 @@
+package eu.mjdev.desktop.windows
+
+import java.awt.Color
+import java.awt.EventQueue
+import java.awt.event.MouseAdapter
+import java.awt.event.MouseEvent
+import java.io.IOException
+import javax.imageio.ImageIO
+import javax.swing.*
+
+class TranslucentWindow {
+    init {
+        EventQueue.invokeLater(object : Runnable {
+            override fun run() {
+                try {
+                    try {
+                        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())
+                    } catch (ex: Exception) {
+                        ex.printStackTrace()
+                    }
+                    val frame = JWindow()
+                    frame.isAlwaysOnTop = true
+                    frame.addMouseListener(object : MouseAdapter() {
+                        override fun mouseClicked(e: MouseEvent) {
+                            if (e.clickCount == 2) {
+                                SwingUtilities.getWindowAncestor(e.component).dispose()
+                            }
+                        }
+                    })
+                    frame.background = Color(0, 0, 0, 0)
+                    frame.contentPane = TranslucentPane()
+                    frame.add(JLabel(ImageIcon(ImageIO.read(javaClass.getResource("/Puppy.png")))))
+                    frame.pack()
+                    frame.setLocationRelativeTo(null)
+                    frame.isVisible = true
+                } catch (ex: IOException) {
+                    ex.printStackTrace()
+                }
+            }
+        })
+    }
+}