我在这里的第一篇文章 我想制作一个水平菜单,子菜单在鼠标悬停时向下滑动.我知道我可以使用jQuery,但这是练习我的javascript技能.
我使用以下代码:
var up = new Array()
var down = new Array()
var submenustart
function titleover(headmenu, inter)
{
submenu = headmenu.lastChild
up[inter] = window.clearInterval(up[inter])
down[inter] = window.setInterval("slidedown(submenu)",1)
}
function slidedown(submenu)
{
if(submenu.offsetTop < submenustart)
{
submenu.style.top = submenu.offsetTop + 1 + "px"
}
}
function titleout(headmenu, inter)
{
submenu = headmenu.lastChild
down[inter] = window.clearInterval(down[inter])
up[inter] = window.setInterval("slideup(submenu)", 1)
}
function slideup(submenu)
{
if(submenu.offsetTop > submenustart - submenu.clientHeight + 1)
{
submenu.style.top = submenu.offsetTop - 1 + "px"
}
} …Run Code Online (Sandbox Code Playgroud) 我有一个带有菜单栏图标和状态菜单的非文档 Cocoa 应用程序。我在 Interface Builder 的状态菜单中添加了一个“打开最近的”菜单。填充菜单工作得很好:
[[NSDocumentController sharedDocumentController] noteNewRecentDocumentURL:
[NSURL fileURLWithPath:filename]]
Run Code Online (Sandbox Code Playgroud)
现在我还想在上下文弹出菜单中添加第二个“打开最近”菜单。我将如何以编程方式创建菜单,以便像状态菜单中的版本一样自动填充条目?
我尝试在状态菜单中创建一个副本,但它没有被填充。我假设 NSDocumentController 不知道菜单(坦率地说,我不知道它是如何知道状态菜单中的)。
我有一个使用 2.0 ce 框架在 win mobile 6.5 上运行的 winmo 应用程序:
在某些表单上,我使用菜单栏来显示自定义菜单项,如下所示

“更多”和“取消”按钮已连接事件,以便我实际上可以使表单按照我想要的方式运行。但问题是“确定”默认总是存在,只是关闭当前表单。我想完全删除它,使它看起来像这样
:
但从我迄今为止的研究来看,这是不可能的。我遇到过删除整个菜单栏(我仍然需要其他按钮)或禁用“确定”按钮(但即使有它也会让用户感到困惑)的解决方案
这可能吗?
我正在尝试将一些鼠标监听器添加到GWT的MenuBar的子菜单/级联菜单中.可悲的是,我似乎无法直接访问子菜单popuppanel - 这样做的方法(getPopup())是私有的.由于GWT编译的方式,你无法通过反射访问它.
将鼠标监听器添加到主菜单栏(以检测鼠标何时位于菜单栏边界内)非常简单.但我无法想办法添加一个鼠标监听器来告诉鼠标何时进入其中一个级联子菜单.
我在做什么是这样的:
com.google.gwt.user.client.ui.MenuBar myMainBar = new MenuBar();
myMainBar.addDomHandler(menuHoverOutHandler, MouseOutEvent.getType());
myMainBar.addDomHandler(menuHoverOverHandler, MouseOverEvent.getType());
Run Code Online (Sandbox Code Playgroud)
这适用于实际的GWT MenuBar.当我鼠标进入时,mouseOverEvent会触发.当我鼠标移出时,MouseOutEvent会触发.
问题是如果我从主菜单栏打开一个子菜单,鼠标进入该菜单也会触发MouseOutEvent.我不需要那样做.
当我说子菜单时,我的意思是这里看到的东西:
http://www.gwtproject.org/javadoc/latest/com/google/gwt/user/client/ui/MenuBar.html
因此,只要我在列出Style,Fruit和Term的'main'栏中,鼠标事件就会识别出来.
但是,如果我下到菜单上显示Bold,Italicized,More,那么鼠标事件就相信我完全离开了菜单栏.我需要一种方法来确定鼠标是否位于其中一个子菜单中.(或者这个主菜单栏的子菜单在某处打开)
你不能简单地做
myMainBar.getPopup()
Run Code Online (Sandbox Code Playgroud)
并将侦听器添加到生成的PopupPanel中,因为getPopup是私有的.我正在寻找另一种方法来获取MenuBar.popup
似乎没有方法可以判断其中一个子菜单是否打开,这对我来说有点困惑.似乎有一种令人沮丧的缺乏与这些子菜单交互的能力,我想知道我是否遗漏了一些东西.
我一直在使用JarWrapper制作一个包含捆绑JRE的Mac OS X应用程序包.当我运行应用程序时,菜单栏名称是正确的,但其中的菜单项包含类名称(请参见下面的屏幕截图):

我使用的-Xdock:name="VisUAL"是VM参数,并且在其他地方看过,仅此一项就足以修复菜单项名称.
捆绑的JRE是1.8.0_45.我正在运行Mac OS X 10.10.
还有其他人遇到过这个问题吗?如果是这样,你是如何解决的?谢谢!
当菜单栏变得隐藏或可见时,Cocoa 有没有办法接收通知(或类似的东西)?我试着环顾四周,但没有找到关于这个主题的任何信息。
谢谢
在我的舞台上,我像往常一样为程序在顶部插入了一个菜单栏。我想在舞台的另一个上下文中给 ALT 键(连同箭头键)一些逻辑。但是每次我按 ALT 和箭头时,我也会无意中浏览菜单栏的菜单。
我想避免这种情况或更好地完全禁用这种助记符行为。将所有菜单的 mnemonicParsing 属性设置为 false 失败。我也尝试过这种方法但没有成功:
menubar.addEventFilter(KeyEvent.ANY, e -> e.consume());
Run Code Online (Sandbox Code Playgroud) 我正在快速编写一个应用程序,它位于屏幕顶部的菜单栏中。我需要一个全局和本地事件监视器来打开特定按键上的弹出窗口。本地事件监视器没有问题,但是当用户从 Finder 等应用程序内部点击键盘命令 (cmd+shift+8) 时,弹出窗口会打开,但也会播放 mac 错误“Funk”声音。有什么办法可以禁用它吗?也许应用程序可以通过某种方式吃掉声音,或者将其注册为有效的键盘快捷键以便永远不会播放声音?
这是代码:
NSEvent.addGlobalMonitorForEvents(matching: NSEventMask.keyDown, handler: {(event: NSEvent!) -> Void in
if (event.keyCode == 28 && event.modifierFlags.contains(NSEventModifierFlags.command) && event.modifierFlags.contains(NSEventModifierFlags.shift)){
self.togglePopover(sender: self)
}
});
NSEvent.addLocalMonitorForEvents(matching: NSEventMask.keyDown, handler: {(event: NSEvent!) -> NSEvent? in
if (event.keyCode == 28 && event.modifierFlags.contains(NSEventModifierFlags.command) && event.modifierFlags.contains(NSEventModifierFlags.shift)){
self.togglePopover(sender: self)
}
return event
});
Run Code Online (Sandbox Code Playgroud) 当我尝试请求焦点(我在 macOS Mojave 10.14.2 上)时,当用户单击托盘图标菜单中的“显示”按钮时,它不会更改左上角的菜单栏(例如 Chrome -> java),但至少它把它带到了前面。在全屏应用程序中(例如,在全屏模式下单击 Sublime Text 中的托盘图标)时,它根本不会出现,而是显示在主桌面空间中,而不移动到它。
应该成为
但相反
当点击“显示”时...
好像什么也没发生!它会在不获得焦点或出现在顶部的情况下打开,而是出现在主“桌面”空间上。
toFront()我尝试过将其中之一进行组合,requestFocus()或者只进行其中一个,但似乎不起作用。
有人对这个问题有任何修复/解决方法吗?
这是上面用来演示该问题的简单应用程序:
package me.matetoes.dockvisibility;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.URL;
public class DockVisibilityTester extends Application {
public javafx.scene.control.Button hideButton;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
hideButton = new javafx.scene.control.Button("Hide");
hideButton.setOnAction(e -> handleHide());
Scene scene = new Scene(hideButton, …Run Code Online (Sandbox Code Playgroud) 我想为键盘布局创建一个基于图像和/或基于 PDF 的模板图标,当显示在菜单栏中时,该图标会根据 MacOS Mojave 中的暗/亮模式切换颜色。
我使用Ukelele创建了自定义键盘布局。我将其基于本机键盘布局,允许 Ukelele 从原始布局中提取图标。我没有碰那个图标。然而,当我切换到深色模式时,我的布局的图标仍然是黑色的,而在原始布局中,它会变成白色。
我做了一些研究。根据苹果公司的说法,要让图标自动适应暗/亮模式,听起来它必须是模板图像。(我猜 Ukelele 在从原始布局中提取图标时,以某种方式将基于模板图像的图标转换为非基于模板的图标。)
我猜测模板图像是只有 alpha 通道而没有颜色通道的 PNG 图像。
经过进一步研究,我发现Apple还指的是基于 PDF 的图标。不过,苹果并未透露任何细节。
我对模板图像是只有 alpha 通道而没有颜色通道的 PNG 图像的猜测是否正确?
我如何创建这样的图像?(我可以访问 Adobe CC、Affinity Photo and Designer、Pixelmator Pro 以及显然所有本机 MacOS 应用程序。)
什么是基于 PDF 的图标?在哪里可以找到有关该图标的详细信息以及如何创建它?具体来说,是否iconutil支持基于 PDF 的图标?
谢谢!