Groovy Swingbuilder: How do I create dynamic menus -
i'm creating menu reading directory off disk , creating menuitem each file in directory.
i'd have re-read disk every time menu clicked.
swingbuilder doesn't seem want this-- @ least not easily.
do have add closure "menu" creates menuitems using old-school swing (i don't know if work since you've clicked menu), or there trick swingbuilder re-evaluate section whenever entered?
here's have now:
file scriptdir = new file("c:/mybatchfiles") menu(text:"external tools", visible:scriptdir.isdirectory()) { scriptdirlistfiles().each{ file oneitem -> string name = oneitem.name string command = '"' + scriptdir.path + '/' + name + '"' menuitem(action(name:name){myutils.cmd(command)} } }
you should able adapt following:
import groovy.swing.* import javax.swing.event.* new swingbuilder().edt { def fillmenu = { -> scripts.removeall() new file('/tmp').listfiles().each { scripts.add(menuitem(text: it.name)) } } frame(title: 'testing', size: [800, 600], visible:true) { menubar { menu(id:'scripts', text: 'external scripts') } } scripts.addmenulistener([ menucanceled: { e -> }, menudeselected: { e -> }, menuselected: { e -> fillmenu() } ] menulistener) }
Comments
Post a Comment