我正在嘗試使用JRuby來顯示帶有SWT的托盤項目。我嘗試過使用Windows 7,Ubuntu Unity/gnome 3 /和gnome classic。JRuby + SWT +系統托盤:我做錯了什麼?
我發現托盤物品沒有出現。此外,菜單正在鼠標光標位置處顯示。
我在這裏做錯了什麼?
=begin
# references
* usage of swt gem -- https://github.com/danlucraft/swt/blob/master/examples/menu_and_toolbar.rb
* SWT tray example -- http://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet143.java
=end
require 'java'
require_relative '../dependencies/swt/lib/swt'
class Doro
include Swt::Widgets
IMAGE = File.expand_path('../../assets/doro.jpg', __FILE__)
def initialize
ui_start
setup_tray
ui_end
end
def ui_start
display = Display.get_current
@shell = Shell.new
#@shell.text = self.class.to_s
end
def ui_end
#@shell.set_bounds(50, 50, 300, 200)
#@shell.visible = false
@shell.pack
@shell.open
end
def setup_tray
display = @shell.display
tray = display.get_system_tray
tray_item = TrayItem.new(tray, Swt::SWT::NONE)
tray_item.tool_tip_text = 'Doro'
tray_item.image = Swt::Graphics::Image.new(display, IMAGE)
tray_item.add_selection_listener { }
=begin
tray_item.add_show_listener { |event| puts 'show' }
tray_item.add_listener(Swt::SWT::Show, Swt::SWT::Listener.new { |event| puts 'show' })
tray_item.add_hide_listener { }
tray_item.add_default_selection_listener { }
=end
setup_menu tray_item
tray_item.visible = true
end
def setup_menu(parent)
menu = Swt::Widgets::Menu.new(@shell, Swt::SWT::POP_UP)
fileItem = Swt::Widgets::MenuItem.new(menu, Swt::SWT::PUSH)
fileItem.setText("File")
editItem = Swt::Widgets::MenuItem.new(menu, Swt::SWT::PUSH)
editItem.setText("Edit")
menu.visible = true
parent.add_menu_detect_listener do
menu.each { |m| m.visible = true }
end
end
def start
display = @shell.display
while [email protected]
display.sleep unless display.read_and_dispatch
end
display.dispose
end
end
app = Doro.new
Swt::Widgets::Display.set_app_name app.class.to_s
app.start
UPDATE:
我看到這個代碼沒有任何變化適用於在工作中我的Windows 7的M/C。我看到了正確的圖標。我想知道爲什麼它在家裏的窗戶上不起作用。 (當然永遠不會在Ubuntu上)。我使用了相同版本的SWT jar和swt gem。
我要求澄清;當你說:「它沒有工作」,這意味着你得到一個錯誤或程序完成沒有任何錯誤,但該圖標不出現在系統托盤? –
@Franco Rondini程序完成時沒有任何錯誤,但該圖標未出現在系統托盤中。 – rpattabi
做的java等效工作? – rogerdpack