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.*
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')
Megjegyzések
Megjegyzés küldése