Java openJDK 8中的isPopupMenu方法
刚刚遇到openJDK类方法,实现如下:Java openJDK 8中的isPopupMenu方法,java,swing,openjdk,Java,Swing,Openjdk,刚刚遇到openJDK类方法,实现如下: private boolean isPopupMenu() { return ((invoker != null) && !(invoker instanceof JMenu)); } 我想知道这是否是确定这是否是弹出菜单的最佳方法?对于当前的OpenJDK,当然,它应该可以工作。如果未来的OpenJDK版本引入不同的菜单类型或重新设计实现(这似乎不太可能,不确定现在对Swing有多感兴趣),您的方法可能
private boolean isPopupMenu() {
return ((invoker != null) && !(invoker instanceof JMenu));
}
我想知道这是否是确定这是否是弹出菜单的最佳方法?对于当前的OpenJDK,当然,它应该可以工作。如果未来的OpenJDK版本引入不同的菜单类型或重新设计实现(这似乎不太可能,不确定现在对Swing有多感兴趣),您的方法可能会给出错误的结果
也许有一种更直接的方式来实现你的需求?或者,如果您正在编写一个UI组件,负责区分调用代码?对于当前的OpenJDK,当然,它应该可以工作。如果未来的OpenJDK版本引入不同的菜单类型或重新设计实现(这似乎不太可能,不确定现在对Swing有多感兴趣),您的方法可能会给出错误的结果
也许有一种更直接的方式来实现你的需求?或者,如果您正在编写一个UI组件,负责区分调用代码?因为它是一个私有方法,所以无论是最好的还是其他的,您都不能自己使用它。问题也是“我可以为相同的目的使用相同的逻辑吗?”(因为
getInvoker()
是公共的,它似乎是可以实现的?)。我认为依赖内部逻辑并不是一个很好的方法,但至少现在这个问题对我来说是有意义的(请删除我之前的嘈杂评论,对不起),就openJDK实现的jpopumenu
而言,给定的逻辑可能是“最好的”。作为应用程序程序员要遵循的一个例子,它可能是不必要的通用方法。因为它是一个私有方法,所以无论是最好的还是其他的,它都不能为您自己使用。问题“我可以为相同的目的使用相同的逻辑吗?”(因为getInvoker()
是公共的,它似乎是可以实现的?)。我认为依赖内部逻辑并不是一个很好的方法,但至少现在这个问题对我来说是有意义的(请删除我之前的嘈杂评论,对不起),就openJDK实现的jpopumenu
而言,给定的逻辑可能是“最好的”。作为应用程序程序员要遵循的示例,它可能是不必要的通用性。