2008/10/17

ubuntuで、groovyを使って常駐アプリ作る・その2

昨日に引き続き、ubuntuでクリップボード監視プログラムを作ってみています。
システムトレイ、クリップボード操作、そもそもGUI(AWT)の実装。分からないことだらけです。
なんとかクリップボードを常時監視し、コピーorカットされた文字列をアプリのhistory項目に追加出きるようにはなリました。
import java.awt.*
import java.awt.event.*
import java.awt.datatransfer.*

if (!SystemTray.isSupported()) {
    println "SystemTray is not supported!"
    return
}

toolkit = Toolkit.getDefaultToolkit()

tray = SystemTray.systemTray
image = toolkit.getImage("icon.png")

// <<でadd実行可能に。
menuAdd = { delegate.add(it) }
MenuItem.metaClass.leftShift = menuAdd 
Menu.metaClass.leftShift = menuAdd
PopupMenu.metaClass.leftShift = menuAdd
SystemTray.metaClass.leftShift = menuAdd

popup = new PopupMenu()

item1 = new Menu("history")
item1.addActionListener({ event ->
 println "実装途中"
} as ActionListener)
popup << item1

item2 = new MenuItem("setting")
item2.addActionListener({ event ->
    println "popup action"
} as ActionListener)
popup << item2
popup.addSeparator()

item3 = new MenuItem("exit")
item3.addActionListener({ event ->
    System.exit(0)
} as ActionListener)
popup << item3

clip = toolkit.getSystemClipboard();
clip.addFlavorListener({ event ->
 def recive = clip.getContents(null)
 def recieveStr = null
 try {
     recieveStr = (String) recive.getTransferData(DataFlavor.stringFlavor)
     def i = new MenuItem("" + recieveStr)
     item1 << i
     
 } catch (Exception e) {
     recieveStr = ""
 }
 println "" + recieveStr
} as FlavorListener) 

TrayIcon trayIcon = new TrayIcon(image, "Clipboard Manager", popup)
tray << trayIcon


問題

MenuItemに日本語を利用すると文字化けしてしまいます…同様にコピーしたときにも日本語が含まれていた場合には履歴情報が文字化けしてしまいます。(GUI上のみ)
AWTって、日本語使うと化ける?(そんなわけはない)
あるいはubuntuを使っているため?(でも、他のアプリは日本語表示出来ている)

0 件のコメント:

コメントを投稿