我已经问了一个关于这个here的问题,从那个问题我想出了如何向Objective C对象发送消息。所以我做了,我没有看到任何错误,但状态栏的文本仍未设置(就像它看起来here)。我正在使用Java反射来获取NSStatusItem
:
Tray tray = display.getSystemTray();
TrayItem item = new TrayItem(tray, SWT.NONE);
Field field = TrayItem.class.getDeclaredField("item");
field.setAccessible(true);
NSStatusItem statusItem = (NSStatusItem)field.get(item);
从SWT's source code,我可以看到item
的{{1}}属性为TrayItem
。现在,NSStatusItem
应该是对象statusItem
的{{1}}。现在,我应该可以在NSStatusItem
上调用方法,就像this example:
item
所以要在Java中这样做,我尝试了这个:
statusItem
我正在使用相同的代码行来更改SWT中[statusItem setTitle:@"Status"];
的标题。查看if (statusItem != null) {
NSString title = NSString.stringWith("Desired Title");
OS.objc_msgSend(statusItem.id, OS.sel_setTitle_, title != null ? title.id : 0);
}
方法here,了解如何将消息发送到Objective C NSWindow
。 This是我的目标,但文字没有设定。