我有一个包含大量Swing组件的应用程序,它们嵌套在多个容器中。
我正在实现右键弹出菜单,根据组件所在的上下文显示信息。
举个例子: 如果我右键单击一个JTextField,如果这个textfield是在JScrollPane中,我希望在弹出窗口中显示"foo",如果不是则显示"bar"。但是这个JTextField本身可能嵌套在几个其他的JPanel中。
我可以像这样做:
public static boolean isInScrollPane(JComponent comp) {
Container c = comp.getParent();
while (c != null) {
if (c instanceof JScrollPane) {
return true;
} else {
c = c.getParent();
}
}
return false;
}
但我敢打赌,已经有一个更好的解决方案了,只是我没有找到它。
能否有人给我指点一下?