iknowAPIを使ったちょっとした辞書アプリ
SwingBuilderの練習でiknowAPIの辞書検索するクライアントを作ってみた。
がんばればもっときれいに書けていろいろできそう。
import groovy.swing.SwingBuilder import java.awt.BorderLayout as BL import javax.swing.WindowConstants as WC import javax.swing.BorderFactory as BF slurper = new XmlSlurper() swing = new SwingBuilder() search = swing.action( name:"search", //アクションの名前 closure: this.&searchWord, //処理内容 mnemonic:'S', //簡略記憶記号 accelerator:'ctrl S' //促進するもの ) frame = swing.frame(title:"Dictionary", location:[100,100], size:[300,300], defaultCloseOperation:WC.EXIT_ON_CLOSE){ menuBar(){ menu(mnemonic:'M','Menu'){ menuItem(action:search) separator() menuItem() { action(name:'Exit',accelerator:'ctrl Q', closure:{ System.exit(0) }) } } } panel(border:BF.createEmptyBorder(6,6,6,6)){ borderLayout() vbox(constraints:BL.NORTH){ hbox{ hstrut(width:5) label("WORD ") textField(id:"word",action:search ,columns:10) button(action:search ) } } vbox(constraints:BL.CENTER){ vstrut(10) textArea(id:"meanings",size:[200,200]) } } } frame.show() def searchWord(event) { def sortCols = {a,b -> def aValue = a.text() def bValue = b.text() if(!aValue.equals(bValue)){ return 1 }else{ return 0 } } def word = swing.word.text def url = new URL("http://api.iknow.co.jp/items/matching/${word}.xml") def xml = url.getText("utf8") def vocabulary = slurper.parseText(xml) def meanings = vocabulary.items.item.responses.response.text def sounds = vocabulary.items.item.cue.sound swing.meanings.text = meanings.list().unique(sortCols).join("\n") }