简单快速的去做一个事件测试——使用groovy的swingbuilder
背景:有一个验证,需要验证下cache4j的具体的Cache实现在超出max memory size的情况下其使用的内存状况,会不会在并发情况下出现OOM。为了跑一个持续的jvm进程,又不想借助web容器等,最好的自然是swing的frame了。
?
下面给出groovy的swingbuilder的代码,简单方面,里面只有一个button的click事件处理和信息结果显示的textfield,大家可以根据自己的需要去写事件代码和显示内容,具体针对我这个需求,代码如下:
import groovy.swing.* import javax.swing.* import java.awt.* import org.springframework.context.support.ClassPathXmlApplicationContext// load cache4j def context = new ClassPathXmlApplicationContext('beans.xml')def cache = context.getBean('cache')int count = 1def swing = new SwingBuilder() def getObj = {java.util.List ll = []10000.times{ll << 'XXXX'}return ll}//def cache = context.getBean('cache1')def addCacheObj = {swing.exp.text = count + ':' + cache.cacheInfo.toString() cache.put(count + '_key', getObj())count++}// def frame = swing.frame(title: 'Test Demo', size: [500, 500], location: [100, 100],defaultCloseOperation: javax.swing.WindowConstants.DISPOSE_ON_CLOSE) { panel(layout: new BorderLayout()){button(text: 'Add', actionPerformed: {addCacheObj()}, constraints: BorderLayout.CENTER)textField(id: 'exp', constraints: BorderLayout.NORTH)}} frame.pack() frame.show()?