Ugrás a fő tartalomra

Groovy beviteli ablak

 

Hogyan kezdjünk hozzá?


Legyen felületünk és eseményünk


Pár minta program sor

import javax.swing.*
import java.awt.*
import java.awt.event.*

frame = new JFrame(size: [300, 300],
layout: new FlowLayout(),
defaultCloseOperation: javax.swing.WindowConstants.EXIT_ON_CLOSE)

button = new JButton("KL GOMB minta")
positionLabel = new JLabel("")
msgLabel = new JLabel("")
frame.contentPane.add button
frame.contentPane.add positionLabel
frame.contentPane.add msgLabel

button.addActionListener(
{ JOptionPane.showMessageDialog(frame, "Rám klikkeltél!") } as ActionListener
)

displayMouseLocation = { positionLabel.setText("$it.x, $it.y") }

frame.addMouseListener(displayMouseLocation as MouseListener)
frame.addMouseMotionListener(displayMouseLocation as MouseMotionListener)

handleFocus = [
focusGained : { msgLabel.setText("Jó látni!") },
focusLost : { msgLabel.setText("Gyere vissza!") }
]

button.addFocusListener(handleFocus as FocusListener)

events = ['WindowListener', 'ComponentListener']
// Above list may be dynamic and may come from some input
handler = { msgLabel.setText("$it") }
for (event in events) {
  handlerImpl = handler.asType(Class.forName("java.awt.event.${event}"))
  frame."add${event}"(handlerImpl)
}

frame.show()


És az eredmény:






Legyen száll kezelésünk


Minta


thread = Thread.start {
println "Thread started"
startTime = System.nanoTime()
new Object().sleep(2000)
endTime = System.nanoTime()
println "Thread done in ${(endTime - startTime)/10**9} seconds"
}
new Object().sleep(100)
println "Let's interrupt that thread"
thread.interrupt()
thread.join()


Az eredmény:

Thread started
Let's interrupt that thread
Thread done in 1.9968434 seconds



Kezeljünk állományt


Olvassunk állományból


println new File('thoreau.txt').text 


new File('thoreau.txt').eachLine { line ->
   println line // or do whatever you like with that line here
}



Írjunk állományba

new File("output.txt").withWriter{ file ->
   file << "some data..."
}



Készítsünk XML szerkezetet

langs = ['C++' : 'Stroustrup', 'Java' : 'Gosling', 'Lisp' : 'McCarthy']
content = ''
langs.each { language, author ->
fragment = """
<language name="${language}">
<author>${author}</author>
</language>
"""
content += fragment
}
xml = "<languages>${content}</languages>"
println xml



Értelmezzünk XML filet

languages = new XmlParser().parse('languages.xml')
 
languages.each {
     println "${it.@name} authored by ${it.author[0].text()}"
}
def languagesByAuthor = { authorName ->
    languages.findAll { it.author[0].text() == authorName }.collect {
        it.@name }.join(', ')
   }
println "Nyelvek:" + languagesByAuthor('Lajos')



Linkek


















Megjegyzések